2013-10-09 2 views
0

내 응용 프로그램을 시작할 때, 75 * 10^6 용량의 긴 해시 세트를 생성합니다.이상한 OutOfMemory 큰 트로피 컬렉션을 만들 때

프로파일 러에서 1.4g을 사용합니다. 나는 -Xmx1600m을 설정하려고하고 메모리를 잡아 낸다.

-xmx2000m 동일.

-xmx2030m 동일.

-xmx2040m 좋습니다.

프로필러는 너무 큰 할당을 보지 못합니다.

+1

우리는 아마도 1000s에서 떨어져서이 문제를 해결할 수 있다고 생각합니까? OOME의 경우 힙 덤프를 생성하도록 JVM 옵션을 설정하고 이클립스 메모리 분석기와 같은 도구를 사용하여 분석하십시오. – ppeterka

답변

2

대부분의 경우 자격있는 공간이 충분하지 않을 수 있습니다. jvm은 다른 지역을 축소 시켜서 커다란 연속 블록을 허용 할 정도로 똑똑하지 않을 수 있습니다. 참고 CMS는 조각 모음을 수행하지 않으므로 더 작은 배열로이 문제를 해결할 수 있습니다.

큰 컬렉션의 경우 힙 메모리를 사용하는 것이 좋습니다.

+0

새로운 비율을 줄임으로써 공간을 늘릴 수 있습니다 -XX : NewRatio = 10 (내 경우). 공장! –

+1

@MikhailErofeev 새 배급량을 줄이면 새 공간을 늘리면서, 자격을 갖춘 공간을 줄입니다. 그렇지만 당신이하는 일은 쓰레기의 양을 줄여 공간을 확보하고 분열을 줄이는 것입니다. –

관련 문제