Ошибки нехватки памяти возникают при большом размере кучи, но малом выделенном размере. Почему?

У меня довольно интенсивный процесс памяти, который может привести к увеличению размера кучи до предела (например, 24 в данном случае).

Однако, когда этот процесс заканчивается, а объем выделенной памяти (как указано в инструменте DDMS Heap и в дампе кучи) намного ниже, например, 6 или 7.

Несмотря на то, что объем выделенной памяти низкий и имеется много свободной памяти, куча не работает. t, кажется, возвращается.

Таким образом, даже несмотря на то, что он говорит, что имеется много доступной памяти, я все же могу избавиться от ошибок памяти в этом случае.

Таким образом, возникает пара вопросов:

  1. Даже несмотря на то, что выделенный память на вкладке «Куча» DDMS, и сами дампы кучи показывают только 7 МБ выделенной памяти. Есть ли скрытая память, о которой не упоминается, которая не собирается сборщиком мусора? Если да, то как это отследить?

  2. Кажется, ошибки нехватки памяти связаны с размером кучи, а не размером выделенной памяти. Так есть ли способ заставить размер кучи уменьшиться, когда он не работает? Не нужно ли быть таким высоким, когда процесс, требующий интенсивного использования памяти, закончен?

Спасибо за понимание.

6
задан cottonBallPaws 23 April 2011 в 01:36
поделиться