我遇到了一个相当令人困惑的GC情况:当Eden空间100%满时,使用0%的幸存空间.当伊甸园已满时,应该触发垃圾收集,对吧?
是否存在阻止GC守护程序运行的情况?像一个100%的CPU?
我们正在使用jdk-1.7.
可能是什么原因?下面是jmap输出.
我们还尝试使用捕获更详细的内存使用情况jmap -histo -F,但随后CPU使用率降至0%并且java进程无法访问.
using thread-local object allocation.
Parallel GC with 18 thread(s)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 12884901888 (12288.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 21757952 (20.75MB)
MaxPermSize = 85983232 (82.0MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 4265738240 (4068.125MB)
used = 4265738240 (4068.125MB)
free = 0 …Run Code Online (Sandbox Code Playgroud) 我们知道jmap -histo:live会触发一个完整的gc来确定活动对象:
由于jmap -histo考虑堆中的所有对象(年轻和老一代中的对象),我的观点是,jmap -histo也可以触发完整的gc.但是,我无法找到关于jmap -histo是否可以触发完整gc的可靠文档.
jmap -histo可以触发完整的垃圾回收吗?