首页 > 试题广场 >

minor gc如果运行的很频繁,可能是什么原因引起的,mi

[问答题]
什么原因会导致minor gc运行频繁?同样的,什么原因又会导致minor gc运行很慢?请简要说明一下

minor gc运行的很频繁可能是什么原因引起的?

1、 产生了太多朝生夕灭的对象导致需要频繁minor gc

2、 新生代空间设置的比较小

minor gc运行的很慢有可能是什么原因引起的?

1、 新生代空间设置过大。

2、 对象引用链较长,进行可达性分析时间较长。

3、 新生代survivor区设置的比较小,清理后剩余的对象不能装进去需要移动到老年代,造成移动开销。

4、 内存分配担保失败,由minor gc转化为full gc

5、 采用的垃圾收集器效率较低,比如新生代使用serial收集器

发表于 2019-04-07 22:08:28 回复(2)
考察点:GC 参考回答: 可能是堆内存太小。
发表于 2019-05-03 13:39:52 回复(0)
当 JVM 无法为一个新的对象分配空间时会触发 Minor GC 比如当 Eden 区满了 所以分配率越高 越频繁执行 Minor GC 所有的 Minor GC 都会触发“全世界(stop-the-world)” 停止应用程序的线程 对于大部分应用程序 停顿导致的延迟都是可以忽略不计的 其中的真相就是 :大部分 Eden 区中的对象都能被认为是垃圾 永远也不会被复制到 Survivor 区或者老年代空间 如果正好相反 Eden 区大部分新生对象不符合 GC 条 Minor GC 执行时暂停的时间将会长很多
发表于 2019-04-30 23:43:59 回复(0)
新生代空间设置过大。

2、 对象引用链较长,进行可达性分析时间较长。

3、 新生代survivor区设置的比较小,清理后剩余的对象不能装进去需要移动到老年代,造成移动开销。

4、 内存分配担保失败,由minor gc转化为full gc

5、 采用的垃圾收集器效率较低,比如新生代使用serial收集器

发表于 2019-04-26 21:05:41 回复(0)