Рубрики
Без рубрики

Как имитировать java.lang. Ошибка памяти в Java

Простой фрагмент кода для имитации java.lang. Ошибка из памяти: Пространство кучи Java

Идея проста: создайте объект, содержащий 1 МБ байт, добавьте его в Список и повторяйте процесс создания и добавления, пока JVM не выбросит OutOfMemoryError .

	while (true) {
			// 1MB each loop, 1 x 1024 x 1024 = 1048576
			byte[] b = new byte[1048576];
			list.add(b);
	}

1. java.язык. Ошибка из памяти: Пространство кучи Java

Приведенный ниже пример Java будет выполняться некоторое время и выбрасывает java.lang. Ошибка памяти .

package com.mkyong;

import java.util.ArrayList;
import java.util.List;

public class JavaEatMemory {

	public static void main(String[] args) {

			List list = new ArrayList<>();
			int index = 1;
			while (true) {
					// 1MB each loop, 1 x 1024 x 1024 = 1048576
					byte[] b = new byte[1048576];
					list.add(b);
					Runtime rt = Runtime.getRuntime();
					System.out.printf("[%d] free memory: %s%n", index++, rt.freeMemory());
			}

	}
}

Выход

[2037] free memory: 7633504
[2038] free memory: 5536352
[2039] free memory: 3439104
[2040] free memory: 1573072
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at com.mkyong.JavaEatMemory.main(JavaEatMemory.java:20)

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-simulate-java-lang-outofmemoryerror-in-java/”