У меня есть значительное приложение Java, который создает сложные структуры данных, описывающая рисунок, начиная с сырья и временными метками точек данных и отображения рисунка, анализируя его и т.д.Пытаясь найти утечку памяти в моем Java код свинг
Когда я пытаюсь обработать серию этих чертежей, я явно вишу на память в виде JScrollPane, который используется для хранения чертежа, но я не могу понять, почему. Переменная, удерживающая область прокрутки, переназначается с каждым новым загруженным файлом, но я заметил, что swing RepaintManager поддерживает список ранее отображаемых панелей в списке недействительных компонентов. Кажется, что тогда навешивается на хранилище для каждого чертежа, и вскоре я использую 1 ГБ памяти, когда я обрабатываю файлы поочередно и, следовательно, никогда не должен иметь более одного используемого объема памяти.
У меня есть дамп памяти и проанализирован с помощью анализатора памяти Eclipse и с помощью YourKit.
Вот что я считаю, чтобы быть дымящийся пистолет, как показано анализатором памяти в Eclipse:
Провели довольно долго, пытаясь углубиться в эту проблему. Я был бы очень благодарен за любые предложения о том, где моя ошибка может лежать или как обойти эту проблему.
Я понимаю, что это сложно сказать, не будучи в состоянии копаться в коде, но если есть какие-либо общие предложения/предостережения о том, где искать, это было бы здорово.
Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer
Вы удаляете старые прокрутки? Возможно, вместо того, чтобы создавать новые, вы должны просто повторно использовать существующее и изменить компонент viewportView – MadProgrammer