28得票4回答
UseConcMarkSweepGC与UseParallelGC的区别

我目前遇到非常长的垃圾回收时间问题,请看以下情况。我的当前设置是使用 -Xms1g 和 -Xmx3g。我的应用程序正在使用 Java 1.4.2。我没有设置任何垃圾回收标志。看起来,3GB 的内存不足以处理我需要回收的大量对象。 问题: 我应该更改垃圾回收算法吗?我应该使用什么?使用 -X...

18得票2回答
使用并发标记清除垃圾收集器,配备超过120GB的RAM。

有人成功在Hotspot中使用Concurrent Mark Sweep垃圾收集器(UseConcMarkSweepGC)并且内存超过120GB吗? 如果我将-ms和-mx设置为120G,JVM可以正常启动,但如果我将它们设置为130G,JVM在启动时会崩溃。并行和G1收集器可以正常启动(但...

17得票1回答
-XX:+UseConcMarkSweepGC(默认的年轻代收集器是什么?)

据我所知,我们可以使用以下选项运行JVM:-XX:+UseConcMarkSweepGC -XX:-UseParNewGC 在这种情况下,我们将使用Serial (DefNew)垃圾收集器作为年轻代的垃圾收集器,Concurrent Mark Sweep垃圾收集器作为老年代的垃圾收集器。 那...

14得票4回答
为什么并发标记和清除(CMS)清理的内存量不如Full GC?

我的生产机器出现了一个奇怪的问题。它运行着一个执行CMS(并发标记和清除)的Java应用程序,但只清理老年代的一小部分内容。我怀疑可能存在内存泄漏,并尝试进行了堆转储。但在堆转储之前的Full GC几乎清理了老年代的所有内容。这是怎么回事?我从未见过Java垃圾收集的这种行为。通常CMS和Fu...

14得票3回答
CMS是一个"并发标记扫描",它是否会导致停顿事件?

我发现我的系统在卸载类时会出现很多挂起的情况...[Unloading class sun.reflect.GeneratedMethodAccessor117] [Unloading class sun.reflect.GeneratedConstructorAccessor1896] [U...

13得票4回答
JVM CMS垃圾回收问题

我在一个应用程序的GC日志文件中看到了以下使用Concurrent Mark-Sweep收集器的症状:4031.248: [CMS-concurrent-preclean-start] 4031.250: [CMS-concurrent-preclean: 0.002/0.002 secs] ...

11得票1回答
CMS垃圾收集器 - 何时运行?

我对可能控制CMS收集器何时开始的两个参数感到困惑: MaxHeapFreeRatio(默认为70%) CMSInitiatingOccupancyFraction(默认超过90%) 这两个参数具体是什么意思? 收集器何时开始(标记阶段)和收集(清扫阶段)?

10得票4回答
Java并发标记清除垃圾收集器未能清除所有垃圾

简述:CMS垃圾收集器似乎未能收集越来越多的垃圾;最终,我们的JVM填满了,并且应用程序变得无响应。通过外部工具(JConsole或jmap -histo:live)强制进行GC一次可以清理它。 更新:该问题似乎与JConsole的JTop插件有关;如果我们不运行JConsole或以没有JT...

7得票2回答
避免Java CMS GC中的晋升失败

我有一个使用CMS垃圾回收的Java应用程序,每天会发生几次"ParNew(promotion failed)"全GC(下面是示例)。我知道当垃圾回收无法在老年代中找到足够(连续)的空间来晋升新生代的对象时,将会发生晋升失败。此时,它被迫执行昂贵的停止全GC。我想避免这样的事件。 我已经阅读...