有没有人设法在Hotspot中使用超过120GB RAM的Concurrent Mark Sweep垃圾收集器(UseConcMarkSweepGC)?
如果我将-ms和-mx设置为120G,JVM就会正常启动,但是如果我将它们设置为130G,则JVM会在启动时崩溃。 JVM可以通过并行和G1收集器启动(但它们有自己的问题)。
有没有人设法使用超过120GB堆的并发标记扫描收集器?如果是这样,你有什么特别的,或者我只是在这里不走运?
JVM错误转储中的堆栈如下:
Stack: [0x00007fbd0290d000,0x00007fbd02a0e000], sp=0x00007fbd02a0c758, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libc.so.6+0x822c0] __tls_get_addr@@GLIBC_2.3+0x822c0
V [libjvm.so+0x389c01] CompactibleFreeListSpace::CompactibleFreeListSpace(BlockOffsetSharedArray*, MemRegion, bool, FreeBlockDictionary::DictionaryChoice)+0xc1
V [libjvm.so+0x3d1ae0] ConcurrentMarkSweepGeneration::ConcurrentMarkSweepGeneration(ReservedSpace, unsigned long, int, CardTableRS*, bool, FreeBlockDictionary::DictionaryChoice)+0x100
V [libjvm.so+0x49d922] GenerationSpec::init(ReservedSpace, int, GenRemSet*)+0xf2
V [libjvm.so+0x48d0b9] GenCollectedHeap::initialize()+0x2e9
V [libjvm.so+0x824098] Universe::initialize_heap()+0xb8
V [libjvm.so+0x82657d] universe_init()+0x7d
V [libjvm.so+0x4cf0dd] init_globals()+0x5d
V [libjvm.so+0x80f462] Threads::create_vm(JavaVMInitArgs*, bool*)+0x1e2
V [libjvm.so+0x51fac4] JNI_CreateJavaVM+0x74
C [libjli.so+0x31b7] JavaMain+0x97
我已经用Oracle(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7175901)为此提出了一个错误,但我想知道是否还有其他人看过它。
答案 0 :(得分:3)
这似乎被Oracle接受为错误:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7175901
答案 1 :(得分:1)
有同样的问题。我们将ms减少到140以下,似乎有效。将mx留在400g并编写测试程序。