2010-01-15 7 views
10

파일 검색을위한 Java 데스크톱 응용 프로그램이 있으며 대개 기본 힙 제한에 곧 도달합니다. 설치 될 모든 시스템에 대한 액세스 권한이 없으므로 응용 프로그램 자체에서 JVM 힙 크기를 늘리고 싶습니다. 누군가가 내 응용 프로그램프로그래밍 방식으로 Java 힙 크기를 늘리는 방법

+2

jvm (예 : Xmx)에 대한 시작 매개 변수가 정의 된 시작 스크립트 (bat 또는 sh)를 추가하고 응용 프로그램 자체와 함께 배포하는 이유는 무엇입니까? –

+3

앱이 의지대로 앱을 올릴 수있는 경우 한도 설정은 무엇이겠습니까? –

+0

실행중인 응용 프로그램에서 메모리 제약 조건을 프로그래밍 방식으로 변경할 수 없음 –

답변

2

내가 프로그래밍 그렇게 할 수있는 방법을 좀 도와 줄래은 증가 Java 힙 크기에 대한이 게시물을 참조 :

increase the java heap size permanently?

어쩌면 또한 메모리 사용량을 줄일 수있는 코드의 일부를 청소 할 수있다.

최고 감사합니다.

4

이렇게 할 수있는 표준 API는 없습니다.

값을 지정할 수 있으므로 Java Web Start를 사용하여 응용 프로그램을 호출하는 것이 좋습니다 (최신 Sun Java 6에서 로컬 응용 프로그램에 사용할 수 있음).

"Tiny", "Medium", "Large", "Gigantic"힙 크기를 사용하여 정확히 동일한 파일을 가리키는 3 개 또는 4 개의 링크를 가질 수 있습니다.

2

launch4j과 같은 것을보고 누군가가 응용 프로그램 실행을 시작할 때 제한을 제어 할 수있는 실행 파일을 배포하는 것을 고려하십시오.

프로그래밍 방식으로는이 작업을 수행 할 수 없습니다.

2

데스크탑 응용 프로그램의 경우 원하는 메모리 크기를 지정할 수있는 실행 프로그램을 제공하는 것이 좋습니다. JVM 구성 외에도 아이콘, 파일 연결 등을 제공 할 수도 있습니다.

배포 방법은 SO question을 참조하십시오.

6

-Xmx를 1 기가로 설정했다고해서 JVM이 시작할 때 많은 메모리를 할당한다는 의미는 아닙니다. JVM은 더 많은 힙 공간이 필요할 때까지 -Xms (더하기 오버 헤드) 만 할당합니다. 가상 메모리를 쓰러 뜨리거나 OS에서 메모리 할당을 실패한 사용자를 보호해야합니까? 그렇지 않다면 Xmx를 큰 값으로 설정하십시오. Windows 32 비트 JVM은 1.2Gig 이상의 Xmx 설정을 무시하는 경우가 많으므로 안전성 이상으로 요청하지 않는 것이 가장 좋습니다.

+1

32 비트 JVM은 큰 힙 크기를 무시하지 않고 시작하지 않습니다. 그냥 -mx1200m 또는 유사하게 설정하십시오. (-mx는 -Xmx와 마찬가지로 작동합니다) –

관련 문제