문제

메모리 원소 클래스에서 값이 쿼리 될 때 "커밋 된"메모리의 정확한 의미가 무엇인지 궁금합니다. 이 클래스는 "커밋 된 Java Virtual Machine에서 사용할 수있는 메모리 (바이트)를 나타냅니다."라고 설명합니다. 이것은 JVM 프로세스에 의해 메모리가 사용 중이며 Java 프로세스에 의해 공개 될 때까지 다른 프로세스에 사용할 수 없음을 의미하거나, 해당 양의 메모리에 할당하려고 시도하면 Java 프로세스가 성공할 것임을 의미합니다. ? 나는 이것이 구현에 따라 다를 수 있지만 핫스팟에만 관심이 있습니다.

도움이 되었습니까?

해결책

커밋 된 크기는 실제로 할당 된 메모리이며, 중고 크기는 실제 데이터를 저장하는 데 사용되는 크기입니다 (~ = 커밋 된 경우 주요 GC를위한 시간이며 힙을 늘릴 수 있습니다). 최대 크기는 힙이 자랄 수있는 단단한 한계입니다. 충분하지 않으면 JVM이 제외하고 제외됩니다.

메모리가 커밋되면 확실히 사용할 수 있습니다. 또한 JVM이 더 많은 메모리를 커밋 할 수없는 유일한 경우 (최신 OS에서) 하드웨어가 가상 메모리를 벗어난 경우입니다.

이 모든 크기는 힙 영역의 크기 만 알려줍니다. JVM에는 다른 메모리 영역도 있습니다 (스레드 스택, JIT 캐시 등) 힙 영역은 일반적으로 가장 크며 이는 프로세스 발자국에 대략적으로 일치합니다.

두 메모 :

  • 커밋 된 크기가 물리적 메모리에 맞지 않으면 그 일부가 페이지 파일로 교체됩니다. 이로 인해 GC 중에 큰 둔화가 발생하며이 경우 힙 크기를 줄임으로써 앱 성능을 향상시킵니다.
  • 일부 운영 체제는 메모리의 이중 예약을 허용합니다. 사용하지 않는 한 원하는만큼 할당 할 수 있습니다 (OS를 잊어 버렸습니다. 누군가 나를 채우십시오).

다른 팁

"이것은 JVM 프로세스에 의해 메모리가 사용되고 있으며 다른 프로세스에는 사용할 수 없음을 의미합니까?" 따라서 OS가 JVM 프로세스에서 취한 것으로 보는 메모리의 양은 (또는 동일).

http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html (링크 할 앵커가 없습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top