Window 환경에서 Java Heap Size 제한

2010. 1. 25. 16:15프로그래밍/Java

반응형
다들 아시는 내용일지 모르겠으나... 제가 예전에 삽질했던 기억도 있고....
궁금해하시는 분들이 좀 있는 것 같다.

Java 어플을 만들어 돌리다 보면 메모리를 많이 사용함으로 인해서 JVM 옵션을 이용해서 heap memory size를 키워서 구동을 시키게 된다.

abcd 클래스를 구동시킬 경우 아래와 같이 말이다.
$ java -Xmx512m abcd

저 안에 있는 Xmx는 Maximum Memory 값이다... 512m 은 512 메가바이트의 메모리를 할당해주라는 말이다.
그럼 한없이 큰 프로그램도 돌릴 수가 있을까? 내 PC는 1기가 램 밖에 안꽂쳐있는데... 1기가 짜리 프로그램은 어찌 돌린단 말인가? 라는 쓸데 없는 고민은 하지 마시고...
여기서 말하는 메모리는 물리적인 램의 사이즈를 지정하는 것이 아니라 시스템의 메모리 공간을 사용하는 것이므로 windows에서 Hdd를 paging 하여 사용하는 가상메모리 조차도 메모리 공간으로 간주한다. 따라서 그런 걱정은 마시고...
그렇다고 무한대로 메모리를 늘려서 어플을 돌릴 수가 있을까?
그렇지 않다. 제약이 있다. 어플을 돌리는 서버의 환경에 따라서 다르다.

32 bit 버전의 windows에서는 1.5~1.6GB 까지로 메모리 사용이 제약된다. 필자의 PC에서는... 1.4기가 정도까지 구동이 된다. 그거보다 키우면 확~ 안돌아간다. ㅠㅠ
따라서 더 큰 메모리 환경에서 구동하고 싶을 경우에는 windows 64 bit 머신에서 작업을 하던지... 리눅스 환경에서 사용하면 된다.
리눅스 환경에서는 4GB로 잡고 돌려봐도 잘~ 돌아가고 문제 없이 결과를 받아볼 수 있었다.

참고로 아래 URL을 보시면... 도움이 되실 듯하다.

아~참 여기서 언급한 JVM은 Sun사의 JVM을 기준으로 이야기 한 내용이므로 오해 없으시길 바랍니다.

http://sinewalker.wordpress.com/2007/03/04/32-bit-windows-and-jvm-virtual-memory-limit/
http://stackoverflow.com/questions/171205/java-maximum-memory-on-windows-xp


반응형