2010-05-11 3 views
2

OOM에서 메모리 덤프를 생성하도록 구성된 Tomcat 응용 프로그램 서버가 있으며 -Xmx1024M으로 시작되므로 기가 바이트를 사용할 수 있어야합니다.메모리 덤프가 사용 가능한 메모리보다 훨씬 작습니다.

이제는 그러한 덤프가 하나 발견되었으며 260MB의 유지되지 않은 메모리 만 포함됩니다. 덤프가 가능한 크기보다 훨씬 작은 것이 어떻게 가능합니까?

+2

힙 공간 또는 PermGen 공간에 대해 메모리 부족 예외가 있습니까? – Affe

+0

+1 @Affe : 좋은 질문입니다. 어떤 이유로 인해 예외가 로그 파일을 만들지 못했지만이를 조사해야합니다. xprof 덤프에는로드 된 클래스에 대한 정보 또는 힙에있는 객체에 대한 정보 만 포함되어 있습니까? – Daniel

+0

@affe : 당신 말이 맞았습니다. PermGen 오류입니다 (오늘 아침 내 기록에서 다시 발견되었습니다). 이 내용을 추가하여 답변을 추가하십시오. 동의 할 수 있습니다. – Daniel

답변

2

Permgen 공간은 독립적으로 힙의 관리 및 메모리를 많이 전반적인있을 경우에도 밖으로 실행할 수 있습니다. 일부 웹 프레임 워크 (특히 JSF)는 실제 돼지이며 쉽게 기본 구성을 실행하지 못하게합니다. -XX로 증가시킬 수 있습니다. MaxPermSize = ### m

시스템 공간이 힙과 permgen의 합계에 의해 제한되므로, 네이티브 스레드를 만들 수 없음을 알기 전에 총 리소스를 더 적게 소비 할 수 있음을 기억하십시오. OOM 예외 PermGen이 증가하면 힙을 줄이지 않으면됩니다.

2

할당 된 메모리 사용에 대한 정보 만 파일로 덤프됩니다. 힙 덤프는 힙의 바이너리 이미지가 아니며 데이터 유형 등에 대한 정보를 포함하며 사용 가능한 메모리를 초과 할 수 있습니다.

Text (classic) Heapdump file format

+0

+1 맞습니다. 알아요.하지만 어떻게 될 수 있습니까? 사용 가능한 메모리의 크기의 25 %입니까? – Daniel

+1

@Daniel 큰 개체의 경우 힙 덤프의 표현은 실제 메모리 할당과 비교하여 작을 것입니다. – stacker

+0

왜 이것이되어야합니까? 객체가 8 바이트로 정렬되어 있다는 것을 알고 있지만 큰 차이점에 대한 설명이 아닙니다. – Daniel

관련 문제