Я стараюсь изо всех сил объяснить свой вопрос. Может быть, это немного абстрактно.
Я прочитал некоторую литературу о том, что я не объясняю GC явно в Java-коде, метод finalize, указывающий на null и т.д.
У меня есть несколько больших файлов XMLs (клиентские счета). Использование Jaxb, файловые маршалы в сложном Java-объекте. Его атрибуты - это базовые типы (Integer, BigDecimal, String и т.д.), Но также класс других сложных классов, список других классов, список классов со списком как атрибут и т.д.
Когда я делаю свой материал с объектом, мне нужно удалить его из памяти. Некоторые XML очень большие, и я могу избежать утечки памяти или ситуации OutOfMemoryError.
Итак, мои вопросы:
- Достаточно ли присвоить большой объект null? Я читал, что если есть мягкие ссылки, GC не освободит объект.
- Должен ли я выполнить глубокую очистку объекта, очистить весь список, присвоить значение null атрибутам и т.д.?
- Как насчет JaxB (я использую Java6, поэтому JaxB построен) и мягкие ссылки? JaxB работает быстрее, чем старый маршаллер JibX, но я не знаю, хуже ли это в использовании памяти.
- Должен ли я обернуть класс jaxB megacomplex с помощью WeakReference или что-то вроде этого?
Извините меня за смешение концепций использования памяти Java, JaxB и т.д. Я изучаю стабильность большого работающего процесса, а файлы .hprof свидетельствуют о том, что все данные клиентов всех счетов-фактур остаются в памяти. Извините, если это простой, простой или редкий вопрос.
Заранее спасибо