[java] 사용 된 Java 힙 크기 및 메모리를 찾는 명령 줄 도구 (Linux)?

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 사용량
  • 최고 실

도구가 열려있는 동안 메트릭과 차트가 업데이트됩니다.

견본: jvm-mon


답변

늦었지만 파티는 매우 간단한 해결책은 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