Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 뇌출혈
- 교보생명
- 리스트
- 추가납입
- jQuery
- 웹개발
- 파이썬
- 수수료
- Vue.js
- 보험료
- 변환
- 문자열
- Java
- 사망
- 급성심근경색증
- python
- 보험
- 코딩
- 프론트엔드
- 가입
- 중도인출
- 인출수수료
- 자바스크립트
- PythonProgramming
- 프로그래밍
- javascript
- 납입
- 심장질환
- 교보
- 특약
Archives
- Today
- Total
SeouliteLab
[Java/자바] 강제적으로 OutOfMemoryError 발생시키기 본문
Java에서 OutOfMemoryError를 강제로 발생시키는 방법을 살펴보겠습니다. 이 글에서는 여러 예제를 통해 자세한 설명과 함께 제시하겠습니다.
예제 1: 메모리 누수를 통한 OutOfMemoryError 발생
import java.util.ArrayList;
import java.util.List;
public class MemoryLeak {
private static List<byte[]> list = new ArrayList<>();
public static void main(String[] args) {
while (true) {
list.add(new byte[1024 * 1024]); // 1MB씩 계속 리스트에 추가하여 메모리 누수 발생
}
}
}
이 코드는 무한히 리스트에 1MB의 바이트 배열을 추가하여 메모리 누수를 유발합니다.
예제 2: 대용량 데이터 생성하여 OutOfMemoryError 발생
import java.util.ArrayList;
import java.util.List;
public class LargeData {
public static void main(String[] args) {
List<String> largeList = new ArrayList<>();
while (true) {
largeList.add(new String(new char[1000000])); // 1MB의 문자열을 계속 리스트에 추가하여 메모리 초과 발생
}
}
}
이 예제는 1MB 크기의 문자열을 리스트에 계속 추가하여 메모리를 소비하고, 결국 OutOfMemoryError를 유발합니다.
예제 3: 큰 배열 할당으로 OutOfMemoryError 발생
public class BigArray {
public static void main(String[] args) {
int[] bigArray = new int[Integer.MAX_VALUE]; // Integer.MAX_VALUE 크기의 배열 할당
}
}
이 코드는 매우 큰 크기의 배열을 할당하여 메모리 부족 상태를 유도합니다.
예제 4: 재귀 호출로 StackOverflowError 발생시켜 OutOfMemoryError 유도
public class StackOverflow {
public static void main(String[] args) {
infiniteRecursion(0);
}
public static void infiniteRecursion(int i) {
System.out.println(i);
infiniteRecursion(i + 1); // 재귀 호출로 인해 호출 스택이 계속 쌓이다가 스택 오버플로우 발생
}
}
이 코드는 무한한 재귀 호출을 수행하여 호출 스택이 오버플로우되어 OutOfMemoryError를 발생시킵니다.
예제 5: 메모리 사용량 측정하여 한계 도달시 OutOfMemoryError 발생
import java.util.ArrayList;
import java.util.List;
public class MemoryLimit {
public static void main(String[] args) {
long maxMemory = Runtime.getRuntime().maxMemory();
System.out.println("Max memory: " + maxMemory);
List<byte[]> list = new ArrayList<>();
long usedMemory = 0;
try {
while (true) {
list.add(new byte[1024 * 1024]); // 1MB씩 리스트에 추가
usedMemory += 1024 * 1024;
if (usedMemory >= maxMemory) {
throw new OutOfMemoryError("메모리 한계 도달"); // 메모리 한계 도달시 예외 발생
}
}
} catch (OutOfMemoryError e) {
System.err.println(e.getMessage());
}
}
}
이 코드는 메모리 사용량을 측정하고 한계에 도달할 때까지 메모리를 추가로 할당하다가, 한계에 도달하면 OutOfMemoryError를 발생시킵니다.
예제 6: 유효하지 않은 메모리 설정으로 OutOfMemoryError 유도
public class InvalidMemoryConfig {
public static void main(String[] args) {
int[] array = new int[-1]; // 음수 크기의 배열 할당
}
}
이 코드는 유효하지 않은 메모리 설정으로 인해 Out OfMemoryError를 발생시킵니다.
'프로그래밍' 카테고리의 다른 글
[Java/자바] 임시 폴더(Temp directory) 경로 가져오기 (0) | 2024.03.10 |
---|---|
[Java/자바] 배열의 깊은 복사 (Deep copy) 예제 (0) | 2024.03.10 |
[Java/자바] Java 10 - var 키워드로 변수 선언 (지역 변수 타입 추론하기) (0) | 2024.03.10 |
[Java/자바] 파일 소유자 이름 확인 (0) | 2024.03.10 |
[Java/자바] 파일 읽기, 쓰기 권한 설정 방법 (0) | 2024.03.10 |