GC的触发条件

1. 关于方法区即永久代的回收,永久代的回收有两种:常量池中的常量,无用的类信息,常量的回收很简单,没有引用了就可以被回收。对于无用的类进行回收,必须保证以下几点:

    1.1 类的所有实例都已经被回收。

    1.2 加载类的ClassLoader已经被回收。

    1.3 类对象的Class对象没有被引用(即没有通过反射引用该类的地方)。

    1.4 永久代的回收并不是必须的,可以通过参数来设置是否对类进行回收。

2、Minor GC ,Full GC 触发条件

    Minor GC触发条件:当Eden区满时,触发Minor GC。

3. Full GC触发条件:

 3.1 调用System.gc时,系统建议执行Full GC,但是不必然执行

 3.2 老年代空间不足

 3.3 方法区空间不足

 3.4 通过Minor GC后进入老年代的平均大小大于老年代的可用内存

 3.5 由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • java基础volidate、线程生命周期、反射、NIO 内存分区GC、类加载 强弱等引用 基本数据结构 线程池 ...
    RichardLee123阅读 2,256评论 0 3
  • 1、GC是什么?为什么要有GC? GC垃圾收集,Java提供的GC可以自动监测对象是否超过作用域从而达到自动回收内...
    夏与清风阅读 10,714评论 0 5
  • 一、垃圾收集的意义  相对于C++来说,Java预言显著的特点就是引入了垃圾回收机制,它使得Java程序员在编写程...
    SunnyMore阅读 6,464评论 0 50
  • 问:你有没有遇到过OutOfMemory问题?你是怎么来处理这个问题的?处理 过程中有哪些收获? permgen ...
    这一刻_776b阅读 3,068评论 0 1
  • 介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明 程序计数器:看做当前线程所执行的字节码行号指示器...
    jemmm阅读 6,664评论 0 9

友情链接更多精彩内容