首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主要GC未在G1中运行

主要GC未在G1中运行
EN

Stack Overflow用户
提问于 2019-09-18 11:22:10
回答 2查看 1.7K关注 0票数 1

在分析了应用程序的性能问题后,注意到以下几点。

  • JVM使用G1 GC
  • 在高峰时段,JVM暂停超过20%。
  • 对于伊甸园空间- GC每分钟的计数是20,GC每分钟的时间是10秒(不是毫秒)
  • 对于老一代空间-不运行GC。它稳步增长,但也显示出一些随机下降(令人惊讶)。
  • 垃圾收集的CPU使用率约为7%,而应用程序的CPU使用率约为30% (包括后台和web请求)。

我试着收集关于G1的更多细节,但仍然有一些问题没有得到回答。如果可以的话请帮忙。

  1. 如果我们使用G1,是否有小的、主要的或完整的GC?如果没有这样的分类,为什么GC不运行在老世代?文档没有确定这一点。
  2. 即使GC没有为老一代运行,内存如何释放,即使它是一点点?(例如,使用的内存从16 to减少到15 to,再次增加到16 to)
EN

回答 2

Stack Overflow用户

发布于 2019-09-18 19:45:30

关于你的第一个问题。作为G1的垃圾收集器实现的思想是最小化甚至避免执行完整的或主要的垃圾回收,因为这是一个停止世界事件,其复杂性会产生更长的暂停和消耗CPU。即使当我使用吞吐量GC时,我也总是试图减少完全垃圾收集的数量,所以我要说,您的系统在没有执行完整GC的情况下运行是非常好的。

此外,请记住,如果您使用的JDK低于版本10,那么使用G1执行完整的GC将只使用一个线程,正如我在本文中指出的那样。

Java 7 G1GC奇怪行为

顺便说一句,它似乎是Java (10)的最新版本,它将包括一个具有并行执行完整G1功能的G1。

关于你的第二个问题。内存是使用次要GC清理的,这就是为什么您可以看到堆消耗减少的原因。

在本文档中,您可以找到关于G1的详细说明。

http://blog.sysco.no/files/guides/JVMGarbageCollectionV1.1.pdf

男子汉

票数 1
EN

Stack Overflow用户

发布于 2019-09-20 13:44:42

我提供了一些文档,其中解释了G1使用了一些称为混合集合的东西。

http://blog.sysco.no/files/guides/JVMGarbageCollectionV1.1.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57991615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档