JVM 학습 노트 와 조정 실전(4):JVM 파라미터 및 테스트 실례

라벨:JVM
1.비 즈 니스 가상 컴퓨터:
  • 핫 스 팟:oracle 비 즈 니스 가상 머 신,jdk 1.8 에서 기본 모드 는 Server
  • Openjdk:오픈 소스 가상 컴퓨터
  • 2.JVM 매개 변수 형식
    -:표준 매개 변 수 는 모든 JVM 을 지원 해 야 합 니 다.명령 행 에 자바 보기-X:비 표준 매개 변 수 를 입력 할 수 있 습 니 다.JVM 마다 구현 이 다 릅 니 다-XX:불안정 매개 변 수 는 다음 버 전이 취 소 될 수 있 습 니 다.
    3.자주 사용 하 는 JVM 파라미터
  • 더미 설정:
  • -Xms 초기 더미 크기
  • -Xmx 최대 더미 크기
  • -Xss 스 레 드 스 택 크기
  • -XX:NewSize=n 신세대 크기 설정
  • -XX:NewRatio=n 은 신세대 와 노 연대 의 비례 를 설정한다.예 를 들 어-XX:NewRatio=3 은 신세대:노 연대=1:3,신 생 대 는 전체 신 구 연대 와 1/4
  • 를 차지한다.
  • -XX:Survivor Ratio=n 신세대 중 eden 구역 과 두 개의 survivor 구역 의 비율,예 를 들 어-XX:Survivor Ratio=3 은 eden:survior=3:2 를 나타 내 고 하나의 survivor 구역 은 전체 신세대 의 1/5
  • 를 차지한다.
  • -XX:MaxPermSize=n 영구 세대 크기 설정
  • 수집 기 설정:
  • -XX:+UseSerialGC 설정 직렬 수집 기 사용
  • -XX:+UseParallelGC 설정 병렬 수집 기
  • -XX:+UseConcMarkSweetGC 동시 수집 기 설정
  • GC 통계 정보:
  • -XX:+PrintGC GC 인쇄 GC 정보
  • -XX:+PrintGCDEtails 상세 GC 정보 인쇄
  • -Xloggc:filename 로그 파일 에 GC 정 보 를 인쇄 합 니 다
  • 기타:
  • -XX:-DoEscapeAnalysis 폐쇄 탈출 분석
  • -XX:-LiminateAllocations 닫 기 스칼라 교체
  • -XX:-UseTLAB 스 레 드 로 컬 메모리 닫 기

  • 4.테스트 인 스 턴 스
    -XX:PrintGCdetails,출력 GC 정 보 는 다음 과 같 습 니 다.
    Heap
    PSYoungGen  total 394240K, used 94393K [0x0000000780800000, 0x0000000798a00000, 0x00000007c0000000)
    eden space 393216K, 23% used [0x0000000780800000,0x000000078641e400,0x0000000798800000)
    from space 1024K, 6% used [0x0000000798900000,0x0000000798910000,0x0000000798a00000)
    to space 1024K, 0% used [0x0000000798800000,0x0000000798800000,0x0000000798900000)
    ParOldGen  total 131072K, used 596K [0x0000000701800000, 0x0000000709800000, 0x0000000780800000)
    object space 131072K, 0% used [0x0000000701800000,0x0000000701895200,0x0000000709800000)
    Metaspace  used 2692K, capacity 4490K, committed 4864K, reserved 1056768K
    class space used 296K, capacity 386K, committed 512K, reserved 1048576K
    

    Runtime 클래스 를 사용 하여 메모리 상황 을 대체적으로 계산 하여 프로그램 메모리 사용 상황 참조 코드 를 추적 합 니 다.
    package com.vechace.JVM;
    /**
    * Description:  Runtime       ,         
    * @author vechace
    *    
    */
    public class JVMTest2 {
        
        static void printMemoryInfo(){
            System.out.println("total: " + Runtime.getRuntime().totalMemory());
            System.out.println("free: " +Runtime.getRuntime().freeMemory());
        }
    
        public static void main(String[] args) {
            
            printMemoryInfo();
            
            byte[] b = new byte[1024*1024];
            System.out.println("------------------");
            
            printMemoryInfo();
    
        }
    
    }
    

    //콘 솔 출력:
    total: 192937984
    free: 190924680
    ------------------
    total: 192937984
    free: 189876088
    

    좋은 웹페이지 즐겨찾기