У меня довольно трудоемкий процесс, который может привести к тому, что размер кучи увеличится до своего предела (например, 24 в этом случае).
Однако, когда этот процесс заканчивается, и выделенная память (как указано в инструменте кучи DDMS и в дампе кучи) становится намного ниже, как 6 или 7.
Несмотря на то, что выделенной памяти мало, а свободной памяти много, куча, похоже, не возвращается.
Таким образом, даже несмотря на то, что в нем достаточно памяти, в этом случае я все равно могу получить ошибки памяти.
Так что напрашивается пара вопросов:
Несмотря на то, что выделенная память на вкладке «Кучи» в DDMS и самих дампах кучи показывает только 7 МБ памяти в качестве выделенной, есть ли скрытая память, которая не упоминается и не собирается сборщиком мусора? Если да, то как мне это отследить?
Кажется, ошибки нехватки памяти основаны на размере кучи, а не на выделенном объеме памяти. Так есть ли способ заставить размер кучи уменьшиться, когда он не должен быть таким большим, когда процесс интенсивной памяти закончен?
Спасибо за ваши идеи.