2010-04-22 5 views

답변

0

네이티브 스레드의 양 :

for((i=0;;++i)) { echo $i ` grep VmSize /proc/\21009/status | grep -o '[0-9]*'` ` grep VmRSS /proc/\21009/status | grep -o '[0-9]*'` ` grep Threads /proc/\21009/status | grep -o '[0-9]*'` ; sleep 1 || break; } > data 

좋아하는 스프레드 시트 도구로 쉽게 가져올 수있는 공백으로 구분 된 파일을 만듭니다.

21009를 모니터링 할 Java 프로세스의 프로세스 ID로 바꿔야합니다.

JVM이 사용하는 모든 메모리가 아닌, NIO가 할당 한 것만을 볼 수 있기를 바란다.이 작은 스크립트는 이미 내가보기에 충분히 유용하다는 것을 입증했지만 조사하고있는 프로그램에 메모리 누수가 없다는 것입니다.

1

예. 예 :

ps x -o command,rss | grep java | grep latest | cut -b 17- 

출력은 KB 단위입니다.

당신은 자바, RSS 및 NIO 버퍼에 대해 내가 다시 잠시했다 질문에 관심이있을 수 있습니다 : 나는 가상 및 RSS 메모리를 모니터하려면이 옵션을 사용했습니다 Why does the Sun JVM continue to consume ever more RSS memory even when the heap, etc sizes are stable?

+0

링크를 제공해 주셔서 감사합니다. 매우 흥미 롭습니다. –

3

직접 메모리 버퍼는 사용하는 실제 메모리 (다음 페이지 크기, 일반적으로 4K) 만 사용합니다. 가상 메모리를 생성 할 때 가상 메모리를 사용하지만 직접 메모리 버퍼의 페이지를 사용할 때까지 OS가 실제 메모리 (상주) 페이지를 할당하지 않을 정도로 똑똑합니다. 이는 사용 된 실제 메모리의 크기가 할당하는 메모리의 양 (가상)보다 작을 수 있음을 의미합니다. 물리적/상주 메모리는 신경 써야합니다.

몇 가지 KB를 사용하기를 원한다고해도 몇 MB 버퍼를 할당 할 수 있습니다. 사용하는 양만 사용하고 더 많은 것이 필요하면 프로그램이 터지지 않습니다. 쪽으로. 즉, 크기를 올바르게 설정할 필요가 없으며 할당 된 크기를 상당히 추정 할 수 있습니다.

관련 문제