예비 이해
둘째로, 아날로그 메모리 오버 플로우
기록 테스트 클래스 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