与通过JVM进行的常规GC调整相比,JProfiler“运行GC”按钮用于清理垃圾的内容是什么

问题描述 投票:1回答:1

我有java企业应用程序,因为几天后消耗更多内存,即使GC正在运行并且我们有足够的参数设置(ConcMarkSweepGC)它也没有释放完整的内存。

当我附加了JProfiler时,可以看到每当GC运行时,它只是清除,如果它消耗9GB,只有大约1到1.2 GB被清除。同时,如果我点击JProfiler附带的“运行GC”按钮,它将从9 GB占用中清除至少6-7 GB。

我试图了解Jprofiler GC与应用程序执行的常规GC的比较。

以下是所需的一些细节: - App服务器:Wildfly 9 - Java版本:Java 8 - 操作系统:Windows 2012 - 64位

对此有任何帮助会有所帮助。提前致谢。

java garbage-collection jprofiler
1个回答
2
投票

不同GC算法之间的行为有所不同,但原则上旧空间上的GC不应该始终清除所有未使用的内存。在New Space中,我们看到一个复制并行GC来对抗内存碎片,但旧空间应该要大得多。运行这样的GC会导致长时间的停止。您选择了ConcMarkSweepGC这是一个并发GC,如果有足够的可用内存,它将不会尝试执行完全停止的GC循环。您可能已经使用JProfiler在Old Space上启动了一个完全停止世界的GC。

如果您想详细了解它,请阅读JVM中的不同GC算法。它们中有很多,它们的设计目标不同。

© www.soinside.com 2019 - 2024. All rights reserved.