2016-10-13 2 views
0

Java 프로세스에 이상한 문제가 있습니다. 이 -Xmx3G 시작되었고, 어떤 점에서 그것은 던지기 시작 :-Xmx로 시작한 경우에도 JVM 힙이 2g에 고정됨 3G

java.lang.OutOfMemoryError: Java heap space 

를 오류가 힙 크기가 2G에 붙어 보인다 발생 될 때 주변의 GC 로그를 확인?

... 
12893.533: [Full GC 2248110K->2248109K(2315776K), 0.4723440 secs] 
212894.006: [Full GC 2248110K->2248109K(2315776K), 0.4823290 secs] 
212894.490: [Full GC 2248110K->2248110K(2315776K), 0.4642130 secs] 
212894.955: [Full GC 2248114K->2248112K(2315776K), 0.4866180 secs] 
... 

설명 할 수있는 이유는 무엇입니까?

많은 감사, 조지

+0

이시기에 서버에 약 5G RAM이 남아 있음을 언급하기 만하면됩니다. 따라서 모든 RAM이 그 시점에서 사용되지 않았습니다. – GeorgeK

+0

32 비트 또는 64 비트 JVM을 사용하고 있는지 확인하십시오. –

+0

GC 로그를 더 게시하십시오. 게시 한 내용은 젊은 세대 크기를 표시하지 않습니다. OOME을 던지는 콜 사이트에서의 할당이 얼마나 큰지 알아야합니다. – the8472

답변

0

전체 힙을 수집 이것은 주요 GC 로그.

힙은 젊은 세대와 구세대뿐만 아니라 GC hotspot VM generations으로 수집되지 않은 퍼머/가상의 많은 부분으로 구성되기 때문에 3G 힙이 GC 로그에서 약 2.3G를 표시하는 것이 합리적입니다.

힙이 가득차도 GC가 개체를 수집 할 수 없기 때문에 오류가 발생하므로 힙을 더 많이 필요로하거나 힙의 크기를 조정해야 할 수 있습니다. 설정 문제가 있는지 확인하려면 단순히 -Xmx5G를 사용하여 힙이 여전히 2G에서 멈췄는지 확인하십시오 (발생하지 않아야 함).