Java堆空间的划分:新生代、老年代 您所在的位置:网站首页 吴中区划分三个区是哪里 Java堆空间的划分:新生代、老年代

Java堆空间的划分:新生代、老年代

2024-06-29 11:38| 来源: 网络整理| 查看: 265

[java] view plain copy 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算法),步骤如下:

复制(Copying)算法

将内存平均分成A、B两块,算法过程:

1. 新生对象被分配到A块中未使用的内存当中。当A块的内存用完了, 把A块的存活对象对象复制到B块。2. 清理A块所有对象。3. 新生对象被分配的B块中未使用的内存当中。当B块的内存用完了, 把B块的存活对象对象复制到A块。4. 清理B块所有对象。5. goto 1。

优点:简单高效。缺点:内存代价高,有效内存为占用内存的一半。

图解说明如下所示:(图中后观是一个循环过程)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有