Утечка памяти Java при использовании Config - PullRequest
0 голосов
/ 20 октября 2011

Мы используем этот код ниже для чтения значений конфигурации из XML. Я думаю, что это может вызвать утечку памяти.

   // simulated code
   class ConfigReader {

      void matchPlanIDs() {
           ConfigurationItem[] items = ConfigurationHelper.getConfiguration("PLAN_IDS");
           // do something with here in for loop by reading from 
           // items[i].getTagVlue()...;  

           return;
      }
   }

Имеются ли элементы [], имеющие ссылку на ConfigurationHelper.getConfiguration ("PLAN_IDS") в конце выполнения метода и не могут быть собраны сборщиком мусора за один цикл? Это сильная ссылка?

Спасибо за любые указатели.

Ответы [ 3 ]

1 голос
/ 20 октября 2011

Сам по себе

void matchPlanIDs() {
     ConfigurationItem[] items = ...
   return;
  }

Не может вызвать утечку памяти.Конечно, items будет собирать мусор.

Кстати, return в конце тоже бессмысленно.

Если вы думаете, ConfigurationHelper.getConfiguration(...) вызывает утечку памяти, попробуйтечтобы проверить это на простом примере.Если вы действительно заметили ненормальное поведение, возможно, было бы лучше отправить сообщение об ошибке автору ConfigurationHelper.Тем не менее, я подозреваю, что этот случай маловероятен, и я подозреваю, что ваша проблема потребления памяти лежит в другом месте.

0 голосов
0 голосов
/ 20 октября 2011

Экземпляр items может сразу же собрать мусор после окончания выполнения метода, поскольку ничто не содержит ссылки на него. Это не имеет никакого потенциала утечки памяти. Во время выполнения метода массив может потреблять много памяти, хотя и может вызвать полный сборщик мусора, если ваш сборщик мусора не настроен должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...