Оптимизация Java для предотвращения нехватки кучи памятиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Оптимизация Java для предотвращения нехватки кучи памяти

Сообщение Anonymous »

Хорошо, в конкретной ситуации у меня возникла проблема: моя программа получает ошибку нехватки памяти из кучи.

Предположим, у нас есть два списка ArrayList, первый один содержит множество объектов T, второй содержит объект W, созданный из объектов T первого списка.

И мы циклически просматриваем его таким образом (после цикла список :

Код: Выделить всё

public void funct(ArrayList list)
{
ArrayList list2 = new ArrayList();
for (int i = 0 ; i < list.size() ; i++)
{
W temp = new W();
temp.set(list.get(i));
temp.saveToDB();
list2.add(temp);
}

// more code! from this point on the `list` is useless
}
Мой код очень похож на этот, но когда список содержит множество объектов, я часто получаю кучи из памяти (во время цикла for). , хотелось бы решить эту проблему.

Я не очень хорошо знаю, как работает сборщик мусора в Java, но наверняка в предыдущем примере есть много возможностей для оптимизации.
Поскольку список больше не используется после for Цикл, который я считал первой оптимизацией, заключается в переходе от цикла for к циклу do и очистке списка по мере его прохождения:

Код: Выделить всё

public void funct(ArrayList list)
{
ArrayList list2 = new ArrayList();
while (list.size() > 0)
{
W temp = new W();
temp.set(list.remove(0));
temp.saveToDB();
list2.add(temp);
}

// more code! from this point on the `list` is useless
}
Полезна ли эта модификация?
Как мне лучше оптимизировать приведенный выше код? и как я могу предотвратить ошибку нехватки места в куче памяти? (увеличение значений XMX и XMS невозможно).

Подробнее здесь: https://stackoverflow.com/questions/212 ... -of-memory
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»