MeWrite Docs

OutOfMemoryError: Java heap space

JVMのヒープメモリが不足した場合に発生するエラー

概要

OutOfMemoryError: Java heap spaceは、JVMのヒープメモリが不足した場合に発生します。大量のオブジェクト生成やメモリリークが主な原因です。

エラーメッセージ

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3210)
    at java.util.ArrayList.grow(ArrayList.java:265)

原因

  1. ヒープサイズが小さすぎる: デフォルト設定では処理に対してメモリが不足
  2. メモリリーク: オブジェクトが解放されずに蓄積
  3. 大量データの一括処理: 全データをメモリに読み込んでいる

解決策

1. ヒープサイズを増やす

1
java -Xms512m -Xmx2048m -jar app.jar

2. メモリリークを調査

1
2
3
4
# ヒープダンプを取得
jmap -dump:format=b,file=heap.hprof <pid>

# ヒープダンプを分析(Eclipse MAT等を使用)

3. ストリーム処理に変更

1
2
3
4
5
6
7
// 悪い例:全件をメモリに読み込む
List<Record> all = repository.findAll();

// 良い例:ストリームで逐次処理
try (Stream<Record> stream = repository.streamAll()) {
    stream.forEach(this::process);
}

Java の他のエラー

最終更新: 2025-12-09