2012-01-11 2 views
3

,노 - 프로그램을위한 자바 가상 메모리? 다음 무 조작 코드에 대한

public class a { 
public static void main(String args[]) throws Exception{ 
Thread.sleep(100000); 
} 
} 

내가 통해 64 비트 JVM에서 실행하면 "최고"나는 2GB의 가상 메모리를 사용하고 있음을 알 수있다. 그 가상 메모리를 차지하는 것은 무엇입니까? 이 예는 이상한 수 있지만, 우리는에 ulimit -v이 초과 있도록 가상 (MEM)를 많이 사용하는 일부 생산 코드를 참조 할

감사 양

+1

[이 질문에 대한 답변보기 (http://stackoverflow.com/questions/561245/virtual-memory-usage-from-java-under-linux-too) - 많이 사용되는 메모리). 가상 메모리 소비는 거의 의미가 없습니다. – ig0774

답변

4

가상 메모리가 실제로 할당되는 것을 의미하지 않는다 익숙한. 단순히 필요한 경우 현재 사용할 수있는 주소가 많다는 의미입니다.

+0

나는 그것을 알고있다. 바이너리 자체와 라이브러리는 그다지 크지 않습니다. –

+0

"하지 않는다"- 나는 네가 여기서 더블 네거티브를 의도하지 않았을 것이라고 확신한다. 나는 그것을 스스로 고칠 것이지만 아직 2k 담당자는 아니야. –

+0

@KevinK 고마워, 고칠 수있어. –

0

Java 응용 프로그램을 시작하면 시작할 때 힙 (최대 크기까지)이 생성됩니다. 최근 Sun/Oracle JVM의 기본 크기는 주 메모리의 1/4입니다. 예약 주소 공간 만 제외하고는 낭비입니다. 각 응용 프로그램마다 고유 한 주소 공간이 있으므로이 점이 중요하지 않습니다. (주소 공간이 제한된 32 비트 JVM이없는 경우)