JAVA垃圾回收期 老年代和新生代是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA垃圾回收期 老年代和新生代是啥意思相关的知识,希望对你有一定的参考价值。

是“垃圾回收器”吧,就是Java虚拟机内存清理,使用一段时间后内存中会产生大量永远不再使用的对象,如果不清理掉,消耗的内存会越来越大。至于什么时候会执行清理的动作、什么样的内存会成为清理的目标可以另外查资料学些。
老年代和新生代也是和内存相关,虚拟机初始化时已经设定了使用的内存大小,并划分为三部分:新生代– 新创建的对象,
旧生代 – 经过多次垃圾回收没有被回收的对象或者大对象
持久代– JVM使用的内存,包含类信息等
参考技术A java创建一个新的对象,就放在堆内存中的新生代中。 当gc多次回收都回收不掉这块内存(因为这个对象一直有人使用),那么就将这个对象移动到老年代中,如果长期在老年代中还是回收不掉,就会转移到永久代中。 gc对新生代的会后比较频繁,对于老年代回收次数比较少,对于永久代更少。如果永久代满了,就会出现full gc, 也就是对这个内存空间进行gc,这会引发整个jvm所有线程暂时阻塞,即Stop-The-World。 剩下的自己百度一下昂,乖,好好学习本回答被提问者采纳 参考技术B JVM中的新生代用于分配新创建的对象内存空间,在经过一定的gc次数后依然没有被回收的内存空间会被转换到老年代。这个次数是可以作为参数设置。

java什么时候进行垃圾回收,垃圾回收的执行流程

java的垃圾回收分为

三个区域新生代 老年代 永久代

技术分享图片

一个对象实例化时 先去看伊甸园有没有足够的空间
如果有 不进行垃圾回收 ,对象直接在伊甸园存储.
如果伊甸园内存已满,会进行一次minor gc
然后再进行判断伊甸园中的内存是否足够
如果不足 则去看存活区的内存是否足够.
如果内存足够,把伊甸园部分活跃对象保存在存活区,然后把对象保存在伊甸园.
如果内存不足,向老年代发送请求,查询老年代的内存是否足够
如果老年代内存足够,将部分存活区的活跃对象存入老年代.然后把伊甸园的活跃对象放入存活区,对象依旧保存在伊甸园.
如果老年代内存不足,会进行一次full gc,之后老年代会再进行判断 内存是否足够,如果足够 同上.
如果不足 会抛出OutOfMemoryError.

技术分享图片

GC虽然可以进行内存空间的释放,但同时频繁的GC一定会影响性能,GC发生的频率越低,你的系统就越高效.

 

支持原创::https://blog.csdn.net/jidong2622/article/details/78147364
版权声明:本文为博主原创文章,转载请附上博文链接!

 











以上是关于JAVA垃圾回收期 老年代和新生代是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

新生代和老年代垃圾回收的细节

JVM垃圾回收机制及算法详解

JVM垃圾回收机制及算法详解

JVM GC知识- HotSpot 垃圾回收器

《深入理解 Java 虚拟机》学习 -- 垃圾回收算法

JVM之G1垃圾回收器