> Java > java지도 시간 > 본문

Java 메모리 오버플로가 발생할 수 있는 상황은 무엇입니까?

WBOY
풀어 주다: 2023-05-09 16:19:23
앞으로
1431명이 탐색했습니다.

1. 힙 오버플로, 힙은 인스턴스 개체를 저장하지만 조만간 힙 영역이 가득 차게 됩니다. 힙 영역 메모리가 설정된 경우 생성 시 예외가 발생합니다.

public class HeapOOM {
    static class User {}
    public static void main(String[] args) {
         List<User> list = new ArrayList<User>();
            while (true) {
                list.add(new User());
         }
    }
}
/*Exception in thread "main" java.lang.OutOfMemoryError:
GC overhead limit exceeded
at com.fdd.test.HeapOOM.main(HeapOOM.java:11)*/
로그인 후 복사

2. 가상 머신 스택 및 로컬 메서드 스택 오버플로

스레드에 필요한 스택 깊이가 가상 머신 잠금에서 허용하는 깊이보다 크면 StackOverflowError 예외가 발생합니다.

스택 확장 시 가상 머신이 충분한 저장 공간을 신청할 수 없는 경우 예외가 발생합니다.

public class StackOutOfMemoryError {
    public static void main(String[] args) {     
         test();
    }
    private static void go() {
        System.out.println("StackOverflowError异常");
        test();
    }
}
/*Exception in thread "main" java.lang.StackOverflowError
    at sun.nio.cs.ext.DoubleByte$Encoder.encodeLoop(DoubleByte.java:617)
    at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:579)
    at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:271)
    at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
    at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
    at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)
    at java.io.PrintStream.write(PrintStream.java:526)
    at java.io.PrintStream.print(PrintStream.java:597)
    at java.io.PrintStream.println(PrintStream.java:736)
    at com.fdd.test.StackOutOfMemoryError.go(StackOutOfMemoryError.java:11)
at com.fdd.test.StackOutOfMemoryError.go(StackOutOfMemoryError.java:13)*/
로그인 후 복사

3. 메소드 영역 및 런타임 상수 풀 오버플로

4. 기본 직접 메모리 오버플로

DirectMemory 용량은 -XX:MaxDirectMemorySize를 통해 지정할 수 있습니다. 지정하지 않으면 기본값은 Java 힙 값입니다. (- Xmx 지정)은 동일합니다.

위 내용은 Java 메모리 오버플로가 발생할 수 있는 상황은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿