Исключение в потоке “основной” java.lang. OutOfMemoryError: пространство "кучи" Java

Я написал код, и я выполняю его много, но внезапно я добрался OutOfMemoryError:

  Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at javax.media.j3d.BoundingBox.<init>(BoundingBox.java:86)
        at javax.media.j3d.NodeRetained.<init>(NodeRetained.java:198)
        at javax.media.j3d.LeafRetained.<init>(LeafRetained.java:40)
        at javax.media.j3d.LightRetained.<init>(LightRetained.java:44)
        at javax.media.j3d.DirectionalLightRetained.<init>(DirectionalLightRetained.java:50)
        at javax.media.j3d.DirectionalLight.createRetained(DirectionalLight.java:116)
        at javax.media.j3d.SceneGraphObject.<init>(SceneGraphObject.java:119)
        at javax.media.j3d.Node.<init>(Node.java:178)
        at javax.media.j3d.Leaf.<init>(Leaf.java:50)
        at javax.media.j3d.Light.<init>(Light.java:270)
        at javax.media.j3d.DirectionalLight.<init>(DirectionalLight.java:87)
36
задан Zizouz212 14 April 2016 в 21:46
поделиться

3 ответа

У вас закончилась память. Попробуйте добавить -Xmx256m в свою командную строку java. 256m - это объем памяти, предоставляемый JVM (256 мегабайт). Обычно по умолчанию 64 м .

3
ответ дан 27 November 2019 в 05:47
поделиться

Что ж, это говорит само за себя: у вас закончилась память.

Вы можете попробовать запустить его с большим объемом памяти, используя флаг -Xmx, например

java -Xmx2048m [whatever you'd have written before]

Это займет до 2 гигабайт памяти.

Подробнее см. список нестандартных опций .

59
ответ дан 27 November 2019 в 05:47
поделиться

Я не знаю о javax.media.j3d, поэтому могу ошибаться, но обычно вы хотите выяснить, есть ли утечка памяти. Что ж, как отмечают другие, если это было 64 МБ, и вы что-то делаете с 3d, возможно, он явно слишком мал ...

Но на вашем месте я бы установил профилировщик или visualvm , и пусть ваше приложение будет работать в течение длительного времени (дни, недели ...). Затем посмотрите историю распределения кучи и убедитесь, что это не утечка памяти .

Если вы используете профилировщик, такой как JProfiler или тот, который поставляется с IDE NetBeans и т. Д., Вы можете увидеть, какой объект накапливается, а затем отследить, что происходит ... Ну, почти всегда что-то неправильно не удаляется из коллекция ...

3
ответ дан 27 November 2019 в 05:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: