我在一个应用程序的GC日志文件中看到了以下使用Concurrent Mark-Sweep收集器的症状:4031.248: [CMS-concurrent-preclean-start] 4031.250: [CMS-concurrent-preclean: 0.002/0.002 secs] ...
据我所知,我们可以使用以下选项运行JVM:-XX:+UseConcMarkSweepGC -XX:-UseParNewGC 在这种情况下,我们将使用Serial (DefNew)垃圾收集器作为年轻代的垃圾收集器,Concurrent Mark Sweep垃圾收集器作为老年代的垃圾收集器。 那...
我目前遇到非常长的垃圾回收时间问题,请看以下情况。我的当前设置是使用 -Xms1g 和 -Xmx3g。我的应用程序正在使用 Java 1.4.2。我没有设置任何垃圾回收标志。看起来,3GB 的内存不足以处理我需要回收的大量对象。 问题: 我应该更改垃圾回收算法吗?我应该使用什么?使用 -X...
简述:CMS垃圾收集器似乎未能收集越来越多的垃圾;最终,我们的JVM填满了,并且应用程序变得无响应。通过外部工具(JConsole或jmap -histo:live)强制进行GC一次可以清理它。 更新:该问题似乎与JConsole的JTop插件有关;如果我们不运行JConsole或以没有JT...
我有一个使用CMS垃圾回收的Java应用程序,每天会发生几次"ParNew(promotion failed)"全GC(下面是示例)。我知道当垃圾回收无法在老年代中找到足够(连续)的空间来晋升新生代的对象时,将会发生晋升失败。此时,它被迫执行昂贵的停止全GC。我想避免这样的事件。 我已经阅读...
我对可能控制CMS收集器何时开始的两个参数感到困惑: MaxHeapFreeRatio(默认为70%) CMSInitiatingOccupancyFraction(默认超过90%) 这两个参数具体是什么意思? 收集器何时开始(标记阶段)和收集(清扫阶段)?
我的生产机器出现了一个奇怪的问题。它运行着一个执行CMS(并发标记和清除)的Java应用程序,但只清理老年代的一小部分内容。我怀疑可能存在内存泄漏,并尝试进行了堆转储。但在堆转储之前的Full GC几乎清理了老年代的所有内容。这是怎么回事?我从未见过Java垃圾收集的这种行为。通常CMS和Fu...
有人成功在Hotspot中使用Concurrent Mark Sweep垃圾收集器(UseConcMarkSweepGC)并且内存超过120GB吗? 如果我将-ms和-mx设置为120G,JVM可以正常启动,但如果我将它们设置为130G,JVM在启动时会崩溃。并行和G1收集器可以正常启动(但...
我发现我的系统在卸载类时会出现很多挂起的情况...[Unloading class sun.reflect.GeneratedMethodAccessor117] [Unloading class sun.reflect.GeneratedConstructorAccessor1896] [U...