티스토리 뷰
자바개발을 하다보면 어떤 이유에서든 Out of Memory 예외를 만나는 경우가 있습니다.
하지만 사용자 코드로 임의로 발생 시키고 싶을때도 있죠.
이하 JDK 1.6 기준 메모리 유형별 Out of Memory 를 발생 시키는 코드 입니다. (JVM 메모리 영역에 대한 설명은 생략)
1.PermGen
1 2 3 4 5 6 7 8 9 10 11 12 | public class OomTest { public static void main(String[] args) { List<String> nogc = new ArrayList<String>(); while (true) { StringBuilder a = new StringBuilder(); for (int i = 0; i < 1000; i++) { a.append(UUID.randomUUID().toString()); } nogc.add(a.toString().intern()); } } } |
결과
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
at java.lang.String.intern(Native Method)
at OomTest.main(OomTest.java:13)
2.Heap
1 2 3 4 5 | public class OomTest { public static void main(String[] args) { new ArrayList(Integer.MAX_VALUE); } } | cs |
결과
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.ArrayList.<init>(ArrayList.java:112)
at OomTest.main(OomTest.java:7)
3.Stack
1 2 3 4 5 6 7 8 | public class OomTest { private static void stackOom() { stackOom(); } public static void main(String[] args) { OomTest.stackOom();; } } | cs |
결과
Exception in thread "main" java.lang.StackOverflowError
at OomTest.stackOom(OomTest.java:7)
at OomTest.stackOom(OomTest.java:7)
at OomTest.stackOom(OomTest.java:7)
at OomTest.stackOom(OomTest.java:7)
'Java' 카테고리의 다른 글
[자바] 자바에서 Call By Value 인가? Call By Reference? (0) | 2018.01.23 |
---|---|
[자바] 자바8 에서 하위디렉토리 전부 삭제하기 (0) | 2018.01.17 |
[자바] 자바에서 유니크ID, Key 값 만들기 (0) | 2018.01.16 |
[자바] Java8 에서 람다(Lamda)식 사용하기 1편 (0) | 2018.01.15 |
[자바] Currying In Java 8 (0) | 2017.12.06 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크