Out of memory
От: starfinder  
Дата: 14.11.08 10:04
Оценка:
Всем добрый день.

Вылетает программа из-за отсутствия памяти.
Я тут порылся в форуме, нашел три похожие темы.
Подскажите, как работает сборщик мусора и как ему можно помогать, чтобы он лучше справлялся со своей работой.
Что вообще нужно делать, чтобы работать с памятью аккуратно.
Если есть ссылки на подобные обсуждения, статьи или книги, буду за них признателен.
Отсутствие ручной операции освобождения памяти поначалу вскружило голову, теперь, чувствую, придется изрядно попотеть, переворачивая всю программу.
Re: Out of memory
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 14.11.08 10:13
Оценка:
Здравствуйте, starfinder, Вы писали:

S>Всем добрый день.


S>Вылетает программа из-за отсутствия памяти.

S>Я тут порылся в форуме, нашел три похожие темы.
S>Подскажите, как работает сборщик мусора и как ему можно помогать, чтобы он лучше справлялся со своей работой.

Тут дело не в сборщике мусора, а в утечке памяти. Тут надо помнить, что несмотря на то, что память очищается автоматически, память, на которую есть ссылки от thread roots, не может быть очищена (т.е. если объект доступен из программы, нельзя очищать занимаемую им память). Т.о. если объекты создаются и ссылкт на ниъ сохраняются в каком-то доступном месте, они не могут быть собраны ==> memory leak.


S>Что вообще нужно делать, чтобы работать с памятью аккуратно.


Не сохранять ненужных ссылок


S>Если есть ссылки на подобные обсуждения, статьи или книги, буду за них признателен.

S>Отсутствие ручной операции освобождения памяти поначалу вскружило голову, теперь, чувствую, придется изрядно попотеть, переворачивая всю программу.

здесь.

Brian Goetz немного писал про утечки памяти и рассказывал про один из приемов, как с ними бороться — Plugging memory leaks with weak references
http://denis-zhdanov.blogspot.com
memory leak
Re: Out of memory
От: AL-Udalec Россия  
Дата: 14.11.08 10:13
Оценка:
Попробуй для начала поменять объем памяти выделенной на VM — для некоторых приложений её действительно не хватает. в Eclipse это можно сделать так: Run Configurations -> <Your Appl Name> -> (x)= Arguments -> VM Arguments -> {к примеру} -Xms64m -Xmx256m (по дефалту: -Xms32m -Xmx128m)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.