Подтвердить что ты не робот

Исключение в потоке "main" 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)
4b9b3361

Ответ 1

Ну, это довольно понятно: у вас не хватает памяти.

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

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

Это будет использовать до 2 гигабайт памяти.

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

enter image description here -Xmx1024m -XX: MaxPermSize = 512 м -Xms512m

Добавьте этот параметр в качестве аргумента в параметры сервера

Ответ 5

Если вы перекомпилируете дизассемблированный APK с помощью инструмента APK:

Просто установите выделение памяти немного больше

установите переключатель -Xmx1024m в -Xmx2048m

java -Xmx2048m -jar signapk.jar -w testkey.x509.pem testkey.pk8 "%APKOUT%" "%SIGNED%"

тебе хорошо идти..:)