Linux CentOS 시스템에서 java 8 프로세스를 모니터링하고 사용중인 메모리 양을 수 있습니다. 나는 결국 나는 또한 사용되는 메모리의 양에 영향을주지 않습니다 보인다 java8에서 -Xmx 옵션에 당황하고실제 메모리 사용량을 확인하기 위해 Java 8 프로세스 모니터링
우리의 중앙 모니터링 시스템에 출력을 공급하기 위해 원하는대로 쉘 유틸리티를 사용하는 것을 선호
여기는
다음USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
services 1409 0.0 10.8 4672536 872440 ? Tl Jun03 3:53 /usr/java/lates
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
services 1574 0.0 11.4 4743036 925536 ? Sl Jun03 3:13 /usr/java/lates
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
services 19839 0.7 10.9 4735664 881420 ? Sl 09:43 0:15 /usr/java/lates
일부 설정 FR은 자바 프로그램에 대한 ps
정보
for jvm in `sudo -u services jps|awk '/.jar/ {print $1}'`; do ps up $jvm;done
출력을 얻을 수있는 스크립트입니다 톰 프로그램
sudo -u services jps -lvm
1409 /usr/local/content-adapters/pmc-adapter/pmc-adapter.jar -Xmx1024m -Xms512m
1574 /usr/local/content-adapters/tools-adapter/tools-adapter.jar -Xmx512m
20685 sun.tools.jps.Jps -lvm -Dapplication.home=/usr/java/jdk1.8.0_65 -Xms8m
19839 /usr/local/content-adapters/cas-adapter/cas-adapter.jar
내가 그러면 jstat를 사용하는 경우, 내가 여러 숫자가 위의 어느 4.5GiB VSZ 번호를 추가 할 "사용"할 수 없습니다
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
intx CompilerThreadStackSize = 0 {pd product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx HeapSizePerGCThread = 87241520 {product}
uintx InitialHeapSize := 130023424 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 2063597568 {product}
intx ThreadStackSize = 1024 {pd product}
intx VMThreadStackSize = 1024 {pd product}
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
서버 기본값에 대한 몇 가지 정보 또는 800-900MiB RSS
내 질문에 내가 관련이 어떻게
- 있는 -Xmx 및 기타 설정 사용 된 실제 메모리의 양은 얼마입니까?
- jstat를 사용하여 사용중인 메모리 양을 표시하는 방법은 무엇입니까?
- 아마도 VSZ와 RSS의 차이는 모든 Java 프로그램에서 사용하는 공유 리소스의 일부 때문일 수 있습니다. 이 측정 항목을 어떻게 예측하거나 찾을 수 있습니까?
예제에서 "tools-adapter.jar"의 RSS는 903MB이지만 Xmx는 512M입니다. 거의 두 배처럼, 우리가 실행중인 내용에 대해서는 무언가가 가정에 부합해야합니다. – Vorsprung
매핑 된 파일을 찾기 위해'pmap'을 사용할 수 있고, 자바가 아닌 힙을 찾기 위해 [java NMT] (https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr007.html)를 사용할 수 있습니다. 직접 바이트 버퍼를 찾기위한 JVM 및 힙 덤프네이티브 라이브러리도 범인이 될 수 있지만 추적하기는 어렵습니다. – the8472
@ Vorsprung : 아마 당신의 주장이 실제로 효과가 없을까요? 'java -Xfoo -jar bar.jar'와'java -jar bar.jar -Xfoo' 사이의 의미상의 차이점에 유의하십시오. 불행히도,'-v' 옵션으로'jps'를 사용하면, 둘 다 똑같이 인쇄됩니다 ... – Holger