2015-02-08 4 views
-1

У меня есть проект, который имеет более 3000 исходных файлов; когда я хочу запустить свой проект через несколько минут, он дает мне ошибку, например, java.lang.OutOfMemoryException: java heap space. Я также увеличил память моего проекта, щелкнув правой кнопкой мыши и вариант VM, который я дал 1024 МБ. У меня есть два 2gb на моем ПК.OutOfMemoryException: java heap space

+6

Знаете ли вы, что код работает с большим количеством памяти? Ваш проект может быть просто ошибкой и иметь утечки памяти или бесконечную рекурсию. – Kacy

+0

Или, может быть, код требует больших буферов, ошибок, массивов. Или, возможно, у него есть настраиваемый параметр для контроля того, насколько он захватывает. 3000 классов не так много. В эти дни также нет памяти 2 ГБ ... –

+0

Вы проверили размер памяти кучи? –

ответ

0

Как вы, вероятно, знаете, вы можете увеличить память JVM с помощью java -Xms<initial heap size> -Xmx<maximum heap size>.

Однако это просто задерживает проблему, поскольку в вашем приложении есть место, где происходит утечка памяти, вызывающая переполнение кучи. Я предлагаю вам использовать такой инструмент, как Netbeans Profiler, который поможет вам узнать, где происходит утечка памяти. Netbeans Profiler позволит вам увидеть, где создаются объекты, где происходит сбор мусора и т. Д.

+0

Как я могу найти утечку памяти, я использую NetBeans для своего проекта , Эта проблема возникает, когда я хочу очистить и построить проект, и это даст ошибку outOfMemory. пожалуйста, помогите мне. – Adolf

0

Возможно, приложение просто выделяет много памяти или происходит фактическая утечка. Моим подходом было бы использовать анализатор памяти, такой как Eclipse MAT, чтобы увидеть, какие объекты занимают больше всего памяти.

Если все они кажутся действительными, вам, вероятно, потребуется увеличить пространство для кучи. Хотя я работал с проектами веб-приложений 5000+ класса с кучей 512 Мбайт, поэтому я не сомневаюсь, что это была утечка памяти.

Вы также должны искать экземпляры ByteArrayOutputStream в своем коде, они, как правило, занимают большой кусок памяти.