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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与通过JVM进行的常规GC调整相比,JProfiler“运行GC”按钮用于清理垃圾的内容是什么相关的知识,希望对你有一定的参考价值。

我有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位

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

答案

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

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

以上是关于与通过JVM进行的常规GC调整相比,JProfiler“运行GC”按钮用于清理垃圾的内容是什么的主要内容,如果未能解决你的问题,请参考以下文章

JVM层GC调优(下)

jvm调优-从eclipse开始

jvm调优-从eclipse开始

JVM 调优总结

四:JVM调优与常见异常处理方案

如何设置jvm启动参数