triplea-game / triplea

TripleA is a turn based strategy game and board game engine, similar to Axis & Allies or Risk.
https://triplea-game.org/
GNU General Public License v3.0
1.32k stars 393 forks source link

OOM: IoUtils#writeToMemory:74 - java.lang.OutOfMemoryError #11609

Closed tripleabuilderbot closed 6 months ago

tripleabuilderbot commented 1 year ago

Map

total_world_war

Log Message

Error while trying to set GameData

TripleA Version

2.6.14356

Java Version

11.0.9.1

Operating System

Windows 10

Stack Trace

Exception: java.util.concurrent.CompletionException java.lang.OutOfMemoryError: Java heap space
java.lang.Exception
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
    at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1702)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Exception: java.lang.OutOfMemoryError Java heap space
java.lang.Exception
    at java.base/java.util.Arrays.copyOf(Arrays.java:3745)
    at java.base/java.io.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:211)
    at org.triplea.io.IoUtils.writeToMemory(IoUtils.java:74)
    at games.strategy.engine.framework.GameDataUtils.gameDataToBytes(GameDataUtils.java:32)
    at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator.createWorkers(ConcurrentBattleCalculator.java:125)
    at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator.setGameDataInternal(ConcurrentBattleCalculator.java:68)
    at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator.lambda$setGameData$0(ConcurrentBattleCalculator.java:54)
    at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator$$Lambda$1814/0x00000001006d1040.get(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
asvitkine commented 6 months ago

Old prerelease and we recently changed how heap size is set via https://github.com/triplea-game/triplea/pull/12420, so optimistically closing this OOM issue. Please re-open if you see it again.