Java 응용 프로그램의 힙 크기 (및 사용 된 메모리)를 확인하는 명령 줄 도구 (Linux)가 있습니까?
jmap을 통해 시도했습니다. 그러나 그것은 정보를 제공합니다. Eden / PermGen 등과 같은 내부 메모리 영역에 대해서는 유용하지 않습니다.
나는 다음과 같은 것을 찾고있다 :
- 최대 메모리 : 1GB
- 최소 메모리 : 256MB
- 힙 메모리 : 700MB
- 사용 된 메모리 : 460MB
그게 다야. JConsole 등에서 이것을 볼 수 있지만 명령 줄 도구가 필요합니다 (JMX 등을 활성화 할 수 없음).
그러한 도구 / 명령을 알고 있습니까?
답변
각 Java 프로세스에는가 있으며이 명령 pid
을 먼저 찾아야합니다 jps
.
pid가 있으면 jstat -gc [insert-pid-here]
가비지 수집 힙의 동작 통계를 찾는 데 사용할 수 있습니다 .
-
jstat -gccapacity [insert-pid-here]
메모리 풀 생성 및 공간 기능에 대한 정보를 제공합니다. -
jstat -gcutil [insert-pid-here]
각 세대의 사용률을 용량의 백분율로 표시합니다. 사용량을 한눈에 파악하는 데 유용합니다.
Oracle 사이트의 jstat 문서 를 참조하십시오 .
답변
jvmtop 은 힙을 포함한 여러 메트릭에서 라이브 뷰를 제공하는 명령 줄 도구입니다.
VM 개요 모드의 출력 예 :
JvmTop 0.3 alpha (expect bugs) amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
답변
이 명령은 구성된 힙 크기를 바이트 단위로 표시합니다.
java -XX:+PrintFlagsFinal -version | grep HeapSize
EC2의 Amazon AMI에서도 작동합니다.
답변
Ubuntu와 RedHat에서 작동했습니다.
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
Windows의 경우 :
java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"
Mac의 경우
java -XX:+PrintFlagsFinal -version | grep -iE 'heapsize|permsize|threadstacksize'
이 모든 명령의 출력은 아래 출력과 유사합니다.
uintx InitialHeapSize := 20655360 {product}
uintx MaxHeapSize := 331350016 {product}
uintx PermSize = 21757952 {pd product}
uintx MaxPermSize = 85983232 {pd product}
intx ThreadStackSize = 1024 {pd product}
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
크기를 MB 단위로 찾으려면 값을 (1024 * 1024)로 나누십시오.
답변
대부분의 도구가 사용하는 JMX를 사용하지 않고 사용하면됩니다.
jps -lvm
설정이 명령 행 옵션에서 오는 것으로 추론하십시오.
기본적으로 JMX가 없으면 동적 정보를 얻을 수 없지만이를 위해 고유 한 서비스를 작성할 수 있습니다.
BTW : JConsole 대신 VisualVM을 사용하는 것을 선호합니다.
답변
시각적 측면 -jvm-mon 과 함께 명령 행 도구가 있습니다. 다음과 같은 명령 줄을위한 JVM 모니터링 도구입니다.
- 힙 사용량, 크기 및 최대
- jvm 프로세스
- CPU 및 GC 사용량
- 최고 실
도구가 열려있는 동안 메트릭과 차트가 업데이트됩니다.
답변
늦었지만 파티는 매우 간단한 해결책은 jpsstat.sh 스크립트를 사용하는 것입니다. 그것은 간단한 라이브 전류 메모리 , 최대 메모리 및 CPU 사용 세부 정보를 제공합니다.
- 고토 GitHub의 프로젝트 와 다운로드 jpsstat.sh의 파일을
- jpsstat.sh를 마우스 오른쪽 버튼으로 클릭 하고 권한 탭으로 이동하여 실행 파일로 만드십시오.
- 이제 다음 명령을 사용하여 스크립트를 실행하십시오. ./jpsstat.sh
다음은 스크립트의 샘플 출력입니다.
===== ====== ======= ======= =====
PID Name CurHeap MaxHeap %_CPU
===== ====== ======= ======= =====
2777 Test3 1.26 1.26 5.8
2582 Test1 2.52 2.52 8.3
2562 Test2 2.52 2.52 6.4