JVM中堆空间划分、参数设置

转载 2017年02月17日 17:16:27

上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条

1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代

2.新生代可以划分为三个区,Eden区,两个幸存区

在JVM运行时,可以通过配置以下参数改变整个JVM堆的配置比例

1.JVM运行时堆的大小

  -Xms堆的最小值

  -Xmx堆空间的最大值

2.新生代堆空间大小调整

  -XX:NewSize新生代的最小值

  -XX:MaxNewSize新生代的最大值

  -XX:NewRatio设置新生代与老年代在堆空间的大小

  -XX:SurvivorRatio新生代中Eden所占区域的大小

3.永久代大小调整

  -XX:MaxPermSize

4.其他

   -XX:MaxTenuringThreshold,设置将新生代对象转到老年代时需要经过多少次垃圾回收,但是仍然没有被回收
在上面的配置中,老年代所占空间的大小是由-XX:SurvivorRatio这个参数进行配置的,看完了上面的JVM堆空间分配图,可能会奇怪,为啥新生代空间要划分为三个区Eden及两个Survivor区?有何用意?为什么要这么分?要理解这个问题,就得理解一下JVM的垃圾收集机制(复制算法也叫copy算法)

JVM中堆空间划分、参数设置

上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸存区 在JVM运行时,可以...
  • shenhonglei1234
  • shenhonglei1234
  • 2017年02月09日 18:06
  • 663

JVM堆内存结构浅析

Java 1.2以上的版本对jvm内存进行了分代管理,图示如下:          JVM将Heap分为NewGeneration和Old Generation(或Tenured Generat...
  • zhaozheng7758
  • zhaozheng7758
  • 2013年02月28日 19:57
  • 5372

Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

jvm的结构 设置 疑问点 垃圾回收原理 方式, 触发条件。 设置等等的相关纤细介绍...
  • sunny243788557
  • sunny243788557
  • 2016年10月12日 14:30
  • 2489

java 堆内存与JVM参数

堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生...
  • zljjava
  • zljjava
  • 2014年03月04日 15:15
  • 1026

jvm 堆、栈、方法区

栈:   1 基础数据类型 byte short int long float double char boolean  2 方法的形式参数,方法调用完后从栈空间回收  3 引用对象的地址,引用完后,...
  • clz1314521
  • clz1314521
  • 2016年04月04日 12:54
  • 642

tomcat配置JVM参数的三种情况

感谢文章: http://blog.chinaunix.net/uid-29632145-id-4697079.html http://binyan17.iteye.com/blog/2168642/...
  • rainyspring4540
  • rainyspring4540
  • 2016年11月23日 16:13
  • 2005

深入理解Java之JVM堆内存分配

Java堆是被所有线程共享的一块内存区域,所有对象和数组都在堆上进行内存分配。为了进行高效的垃圾回收,虚拟机把堆内存划分成新生代、老年代和永久代(1.8中无永久代,使用metaspace实现)三块区域...
  • xiangzhihong8
  • xiangzhihong8
  • 2017年04月20日 22:16
  • 2841

JVM内存划分总结

通过阅读资料后的个人总结
  • n01boy
  • n01boy
  • 2016年04月23日 08:20
  • 1451

JVM启动参数设置

前言 有时候程序会碰到java.lang.OutOfMemoryError,这个主要是JVM参数没有配好引起的。 OutOfMemoryError分两种:java.lang.OutOfMemo...
  • tianjf0514
  • tianjf0514
  • 2014年03月08日 19:41
  • 19061

你不太熟悉的JVM命令配置参数

导读 JVM是多数开发人员视为理所当然的Java功能和性能背后的重负荷机器,然而我们很少有人能理解JVM是如何进行工作的—像任务分配和垃圾收集、转动线程、打开和关闭文件、中断和/或JIT编译Java...
  • Jack__CJ
  • Jack__CJ
  • 2016年11月05日 19:51
  • 362
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JVM中堆空间划分、参数设置
举报原因:
原因补充:

(最多只允许输入30个字)