매핑 및 분석 JVM 메모리 오버 플로우

예비 이해

 

 

 

둘째로, 아날로그 메모리 오버 플로우
  기록 테스트 클래스 2.1 : TestJvmOutOfMemory.
쓰기 코드는 목록에 100 만 개 수집, 1000 UUID의 캐릭터로 구성된 각각의 문자열을 추가 할 수 있습니다.
프로그램이 정상적으로 실행 할 수 있다면, 마지막 인쇄 확인을 클릭합니다.

패키지 cn.itcast.jvm을; 

수입 인 java.util.ArrayList;
수입 은 java.util.List;
수입 java.util.UUID; 

공공  클래스 TestJvmOutOfMemory { 

    공공  정적  무효 메인 (문자열 []에 args) { 
        목록은 <개체> 목록 = 새로운 ArrayList를을 <> ();
        위한 ( INT ; I <10000000 I ++ I 0 = {) 
            문자열을 STR = "" ;
             ( INT J = 0; J <1000, J ++ ) { 
                STR + = UUID.randomUUID의 toString () ().; 
            } 
            에는 list.add (STR); 
        } 
        에서 System.out.println ( "확인" ); 
    } 
    
}

 

 

 

  설정 매개 변수의 2.2 ~ VM 포션.

 

 

 

 

-Xms8m -Xmx8m -XX : + HeapDumpOnOutOfMemoryError
 

 

셋째, 테스트를 실행

 

 

 

 

분석 MAT을위한 도구에 도입 네,
  4.1 ~ 그림 관찰했다.
  

 

 

분석 : 
... 
당신이 볼 수 있으며, 91있다 03% 더 의심, [] 배열 개체에 의해 점유 된 메모리. 
... 
분석 : 용의자는 이미 90 개 이상의 있기 때문에, 올바른 모든 메모리의 %는 그것에 의해 점령, 그것은 매우 가능한 메모리 오버 플로우입니다.

 

  4.2 세부 사항을 볼 수 있습니다.

 

 

 

이 시점에서, 전투 : 위치 및 메모리 오버 플로우가 완료 분석 할 수 있습니다.

원본 링크 : HTTPS : //blog.csdn.net/weixin_42464054/article/details/90938451

추천

출처www.cnblogs.com/yangzhixue/p/11988596.html