자바 기반 메모리 넘 침 해결

1.실전-메모리 넘 침
  • 메모리 넘 침
  • 스 택 메모리 넘 침
  • 방법 구역 넘 침
  • 직접 메모리 넘 침
  • 2.실전-더미 메모리 넘 침
  • 메모리 넘 침 코드 를 보 여 주 며 포 지 셔 닝 문제
  • 메모리 가 넘 치 는 장면 과 해결 방안 을 정리 합 니 다
  • 쇼핑 몰 프로젝트 에 메모리 가 넘 치 는 코드 가 존재 할 수 있 음 을 분석 하고 해결
  • 3.메모리 넘 침 데모 코드
    
    public class HeapOOMTest {
        private List<String> oomList = new ArrayList<>();
    
        public static void main(String[] args) {
            HeapOOMTest oomTest = new HeapOOMTest();
            while (true) {
                oomTest.oomList.add(UUID.randomUUID().toString());
            }
        }
    }
    
    VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
    이 코드 를 실행 하 는 Main 방법
    
    java.lang.OutOfMemoryError: Java heap space
    Dumping heap to java_pid18940.hprof ...
    Heap dump file created [23854536 bytes in 0.061 secs]
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    	at java.base/java.lang.Long.fastUUID(Long.java:441)
    	at java.base/java.lang.System$2.fastUUID(System.java:2136)
    	at java.base/java.util.UUID.toString(UUID.java:395)
    	at com.imooc.jvminaction.HeapOOMTest.main(HeapOOMTest.java:16)
    
    프로젝트 의 루트 디 렉 터 리 에 자바 자동 생 성pid 18940.hprof 파일
    Mac 시스템:mat.app
    Win 시스템:Eclipse 메모리 분석 기
    4.Eclipse 메모리 분석 기 분석 절차
  • File->Open Heap Dump,방금 발생 한 hprof 파일 을 불 러 오고 Leak Suspects Report
  • 를 선택 하 십시오.
  • Overview 에서 마 우 스 를 퍼 즐 로 이동 하면 알 수 있다
  • java.lang.Thread @ 0xff1dbc28 main
  • Shallow Size:120 B Retained Size:10.9MB(뚜렷 한 비정 상)
  • 클릭++누 르 기 Suspects:++누 르 기 용의자 와 시스템 개요 가 포 함 됩 니 다.
  • Problem Suspect 1 은 공간의 백분율 을 사용 하 는 방법 을 알려 줍 니 다
  • 자세 한 내용 을 클릭 하 십시오»도미 네 이 터 트 리 의 Accumulated Objects in Dominator Tree
  • java.lang.Object[160065]@0xffe 00000
  • 클릭
  • List objects-->수신 참조(다른 사람 이 자신 을 호출)
  • See stacktrace 도 문 제 를 알 수 있 습 니 다.
    图片.png
    jvisualvm.exe 분석 더미 메모리 넘 침
    图片.png
    图片.png
    图片.png
    5.메모리 가 넘 치 는 장면
  • 메모리 유출
  • 질문
  • 비 메모리 유출
  • -Xms-Xmx 분배 불합리
    6.상점 프로젝트 에 메모리 가 넘 치 는 방법 이 존재 할 수 있 습 니 다.
    1.pageSize 제어 로 판단
    
    if (pageSize > 100) {
        pageSize = 100;
    }
    2.SpringMVC 방식
    클래스 헤드 에 주 해 를 달다.
    
    @Validated
    페이지 사이즈 의 참가 주해
    
    @Max(100)
    图片.png
    자바 기반 의 메모리 넘 침 해결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 해결 메모리 넘 침 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기