什么是JProfiler"运行GC"与JVM

时间:2018-03-01 21:37:03

标签: java garbage-collection jprofiler

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

当我附加了JProfiler时,观察到每当GC运行时它只是清除让我们说它是否消耗9GB,只有大约1到1.2 GB被清除。同时,如果我点击"运行GC"与JProfiler连接的按钮,它可以清除至少9 GB占用的6-7 GB。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

相关问题