2012-05-15 2 views
6

저는 실시간 서버에 응용 프로그램을 배포하려고합니다. 그리고 지금 당장 jvm에 대한 힙 및 permgen 크기를 설정해야합니다. 나는 많은 기사를 보았고 그들 모두는 "최소 힙 크기를 (일부 숫자)"로 설정하고 "최대 힙 크기를 (일부 숫자)"로 설정한다고 말합니다. 최소 힙 크기를 설정해야합니다. 최대 힙 크기를 설정하는 이유는 알지만 최소값은 아닙니다. 당신이 이것에 관해 밝혀 주면 고맙겠습니다.정말 Java 최소 힙 크기를 정의해야합니까?

+0

그럼 왜 아무리 낮추더라도 좋을까요? 프로그램에 일정 금액이 필요할 수 있기 때문입니다. 나는 그 질문을 오해하고 있는가? 분 설정이 실제로 필요하다는 뜻입니까? – keyser

+2

가능한 [최소 Java 힙 크기를 설정하는 이유는 무엇입니까?] (http://stackoverflow.com/questions/8085949/whats-the-reason-to-set-a-minimal-java-heap-size) – assylias

답변

6

Java의 힙은 일반적인 메모리 할당 영역입니다. 최소 힙 크기를 1000 바이트로 설정한다고 가정 해 봅시다 (이것은 부적절하게 낮은 숫자입니다). 자 이제 내 프로그램에서 2 천 자 길이의 텍스트가 포함 된 객체를 인스턴스화한다고 가정 해 보겠습니다. 먼저 힙 크기를 확장하지 않고이 개체를 저장할 수 없습니다. 아마도, 아마도 내 최대 힙 매개 변수는 이것을 허용하기에 충분히 크지 만, 이것이 최대 힙 크기를 설정하는 이유입니다.

그러나 내 서버에 4G 램이 있다고 가정하고 최소한의 힙 크기를 설정했습니다. (엄청나게 큰 숫자입니다.) 다른 프로그램이 메모리를 차지하지 않으면 작동합니다. 그러나 Java 프로그램으로 두 번째 프로세스를 시작하면 충분한 메모리를 할당하고 종료 할 수 없습니다.

최소 크기는 두 가지를합니다. 첫째, 빠른 시작을 위해 메모리를 빠르게 사용할 수 있습니다. 둘째로, 여러분은 자신의 jvm을 튜닝하여 불변성 (invariant)을 갖게함으로써 실행할 수있는 프로세스의 수를 예측할 수 있습니다. 최소한의 힙 크기가 너무 크면 프로세스를 많이 낭비 할 필요가 없으므로 시스템 용량을 제한 할 수 있습니다. 너무 작게 설정하면 프로그램을 시작하는 데 오랜 시간이 걸리고 프로세스의 성능에 나쁜 영향을 미칩니다.

1

최소 힙 크기를 설정하면 Java가 시작 시간을 향상시키는 일부 메모리를 할당 할 수 있습니다.

1

명시 적으로 최소 크기를 설정하면 (기본값보다 높음) OS 수준에서 할당 조각화와 시작 시간 성능을 향상시키는 데 도움이됩니다.

Java 힙은 운영 체제에 의해 할당 된 메모리로 백업됩니다. 초기 블록이 클수록 재 할당 및 조각화가 덜 발생합니다.

최소값을 최대 값과 같거나 거의 같게 설정하면 이러한 상황이 완전히 제거됩니다.

관련 문제