栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java主要和次要垃圾回收

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java主要和次要垃圾回收

让我解释。

让我们以吞吐量收集器为例。(又名Parallel
Collector)。文档说它使用多个线程来进行次要集合,而使用单个线程来进行主要集合(与串行收集器相同)。

这是要理解的东西。默认情况下,在大多数较新的系统上,JVM使用两个不同的年轻代和老一代垃圾收集器。在我的机器上:我有年轻一代的 并行新收集
,老一代有 并行标记和扫描收集器

当JVM无法为新对象分配空间时会触发次要收集(请记住:新对象始终在Young Generation的Eden区域中分配)。

下一个问题:

完整GC的含义是什么:a)是否意味着次要收藏和主要收藏都已完成?或b)完整GC ==主要收藏?哪一个?

和,

另外,4. Full GC是否也只影响OldGeneration或YoungGeneration?

这取决于。JVM将每个主要集合报告为完整GC。[尝试使用这些标志

java -verbose:gc -XX:+PrintGCDetails-XX:+PrintGCTimeStamp
]。根深蒂固的定义是,Full GC首先运行Minor,然后运行Major(尽管如果Old
Generation已满,则可以切换顺序,在这种情况下,它首先被释放以允许其接收Young Generation的对象)。

好,回到重点。JVM认为[较旧(或Perm)代中的] Major Collection是Full
GC。以下是我能够快速编写以说明这一点的程序的输出。第一行是次要GC,第二行是主要(完整)GC。您可以看到它仅在较老的一代(CMS)中发生过,并且能够将较早的一代从1082K减少到1034K。

  • 11.431: [GC 11.431: [ParNew: 1152K->128K(1152K), 0.0009893 secs] 2111K->1210K(6464K), 0.0010182 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
  • 17.882: [Full GC (System) 17.882: [CMS: 1082K->1034K(5312K), 0.0212614 secs] 2034K->1034K(6464K), [CMS Perm : 9426K->9410K(21248K)], 0.0213200 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]

下一个问题:

如果是a),是否意味着次要集合仍使用多个线程完成,而主要集合仍使用单个线程完成?

是。看到我的答案的开始。年轻人和老年人由不同的收藏家服务。对于年轻一代,您可以使用以下任意一种:

  • -XX:+UseSerialGC
  • -XX:+UseParallelGC
  • -XX:+UseParNewGC

对于旧一代,可用的选择是:

  • -XX:+UseParallelOldGC
  • -XX:+UseConcMarkSweepGC


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437854.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号