【发布时间】:2013-12-03 05:04:11
【问题描述】:
我刚刚注意到,由于一个动作(我试图找出)虚拟机卡住了几次(看起来像垃圾收集器停止了世界)。 通常小型 GC 需要 0.05 秒,突然发生了一些事情,我可以在日志中看到每个小型 GC 甚至增加到 15 秒。 虚拟机在大约 10 分钟内不稳定。
有什么方法可以在源代码中找出原因(除了询问用户当时他们在做什么)?
虚拟机在专用机器(Linux 操作系统)中运行,我只能远程访问它。 进程使用的总内存为 6 gb(稳定时),因此创建内存快照需要大量时间
【问题讨论】:
-
如果你还没有看到这个,你可能对这个线程感兴趣。它给出了一个调试VM的例子:stackoverflow.com/a/1849365/751245
-
您是否尝试过将 Concurrent Mark-Sweep GC 与并行新一代并行使用?
-
我正在使用这样的参数:-Xmx16G -XX:PermSize=2G -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -verbose:gc -XX:+ PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:./gc.log