2011-10-26 1 views
3

최근 악명 높은 오류 메시지가 나타났습니다 : OutOfMemoryError. 64GB Mac에 16GB 램과 2X2.6 GH 쿼드 코어가 있습니다. 이 오류 메시지를 얻는 것은 내가이 알고리즘을 실행하고있는 것과 같은 알고리즘이 다른 컴퓨터에서 원활하게 실행되고 있기 때문에 나에게 의미가 없다. (우분투 16GB 램). 내 맥에 위의 코드를 실행하면자바 메모리를 늘리는 방법 (알고리즘은 Ubuntu에서 실행되지만 Mac에서는 실행되지 않습니다. 동일한 컴퓨터 구성)

System.out.println(java.lang.Runtime.getRuntime().maxMemory()); 

내가 얻을 : 우분투 시스템에서이 코드를 실행할 때 내가 얻을 129,957,888

(물론 :-)의 쉼표없이) : 1,856,700,416

누구나 내 알고리즘을 실행하기 위해 최대 메모리를 어떻게 늘릴 수 있습니까? 감사!

나는 이클립스를 설정하려고 시도했다 : 기본 VM 인수 -Xms512m -Xmx4g,하지만 아무것도 바뀌지 않았다.

+0

16GB RAM을 의미하는 것 같습니다. – Alex

답변

1

당신은 정교해야 할 것입니다. Eclipse 또는 Eclipse 외부에서 테스트를 실행하고 있습니까? 이클립스에 "-Xmx"매개 변수를 전달하는 것은 실제로 Eclipse의 최대 mem 값을 변경하는 정확한 방법 ("-vmargs"접두사가 필요함)으로 수행하더라도 원하는 것을 수행하지 않습니다. 알고리즘을 실행중인 fork 된 JVM의 최대 mem 값을 변경하려면 실행 구성에서 매개 변수를 변경해야합니다.

0

매트 B에는이 덮개가 있습니다. 프로그램이 실제로 많이 필요하지 않는 한 최대 힙 크기를 4GB로 설정하고 싶지 않을 수도 있음을 언급하고자합니다. JVM은 시작될 때 모든 메모리를 자체적으로 할당 한 다음 필요에 따라 코드를 실행하는 데 사용합니다. 그렇게 많은 메모리를 할당하게되면 이 실행중인 다른 응용 프로그램에 성능 문제를 일으킬 수 있습니다. 대신 코드가 실패하는 데 오랜 시간이 걸리면 128MB 단위로 단계적으로 시도하십시오. 또는, 메모리 프로파일 러를 사용하여 실제로 얼마나 많은 공간을 사용했는지 확인할 수 있습니다. 그런 일이 있는지 나는 모른다.

이것은 아마도 설정에 문제가되지 않지만 저 같은 단순한 필사자의 경우 많은 메모리를 할당하는 것은 문제가 될 수 있습니다.