jmap histo /pid > ./log.txt: 특정 프로세스의 인스턴스 수, 점유된 메모리 바이트 수 및 해당 프로세스가 속한 클래스 보기 - heap /pid: 힙 정보 보기
jmap ‐dump:format=b,file=app.hprof /pid
jvisualvm 명령을 통해 jvm 시각적 관리 인터페이스를 시작하여 가져오기 분석을 위한 덤프 파일: 클래스 보기
jstack
교착 상태 분석: 교착 상태 코드 작성public class DeadLockTest { private final static Object lock1 = new Object(); private final static Object lock2 = new Object(); public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { synchronized (lock1) { try { System.out.println(Thread.currentThread().getName() + ": get the lock1"); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (lock2) { System.out.println(Thread.currentThread().getName() + ": get the lock2"); } } } }).start(); new Thread(new Runnable() { @Override public void run() { synchronized (lock2) { try { System.out.println(Thread.currentThread().getName() + ": get the lock2"); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (lock1) { System.out.println(Thread.currentThread().getName() + ": get the lock1"); } } } }).start(); } }
Jstat 힙 메모리 사용량 및 클래스 보기 로딩 수량 정보
jstat -gc /pid : 가비지 수집 통계 S0C: 첫 번째 생존 영역의 크기(KB) S1C: 두 번째 생존 영역의 크기; S1U: 두 번째 생존자 영역 EC: Eden Park의 크기; OC: Old Generation의 크기; Area(메타공간); MU: 메소드 영역의 크기 CCSC: 압축된 클래스 공간 사용 크기 YGC: Young Generation 가비지 수집의 소비 시간 단위 s; FGC: 이전 세대 가비지 수집의 소비 시간, 단위 s GCT: 가비지 수집에 소비된 총 시간, 단위 sjstat -gccapacity/pid: 힙 메모리 통계NGCMN: 신세대의 최소 용량; NGCX: 신세대의 현재 용량; S0C: 첫 번째 생존 영역의 크기; ; EC: Eden Campus의 크기; OGCMX: Old 세대의 최대 용량; OC: 현재 Old 세대의 크기; MCMX: 최대 메타데이터 용량, MC: 현재 메타데이터 공간 크기, CCSMX: 최대 압축 클래스 공간 크기, YGC: 젊은 세대의 GC 수 ; FGC: 이전 세대의 GC 수
jstat -gcnew /pid: 새로운 세대의 가비지 수집 통계 보기
TT: 새로운 세대에서 개체가 살아남는 횟수; 새로운 세대에서 객체가 살아남는 횟수 최대 횟수; DSS: 예상 생존 영역 크기
jstat -gcnewcapacity/pid: 차세대 메모리 용량 보기
S0CMX: 최대 생존 영역 1 크기; : 최대 생존 영역 2 크기; ECMX: 최대 Eden Park 크기
jstat -gcold /pid: 구세대 가비지 수집 통계 보기
jstat -gcoldcapacity/pid: 구세대 메모리 용량 보기
jstat - gcmetacapacity/pid: 메타데이터 공간 통계 보기jstat gc -pid 명령을 통해 Java 애플리케이션의 시작 매개변수를 최적화할 수 있습니다. jstat -gc pid 1000 10(1초마다 명령을 실행하여 총 10회) Eden 영역에 추가될 개체 수를 예측할 수 있습니다. 초당 특정 결과 조정 시간을 사용할 수 있습니다. 실제로 최적화 아이디어는 단순히 각 Young GC 이후에 살아남는 개체를 생존자 영역의 50% 미만으로 만들고 이를 젊은 세대에 유지하는 것입니다. 물체가 노년기에 들어가지 않도록 노력하십시오. 잦은 Full GC가 JVM 성능에 미치는 영향을 방지하려면 Full GC의 빈도를 최소화하세요.
jvm 수준 메모리와 같은 일부 오래된 데이터의 경우 시간이 지남에 따라 점점 더 많은 데이터가 쌓여서 전체 GC가 자주 발생하여 메모리 누수가 발생합니다. LRU 데이터 제거 전략을 구현한 성숙한 캐시 아키텍처인 ehcache를 사용할 수 있습니다.
위 내용은 Java JVM 가상 머신 튜닝 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!