Является ли память кучи Java смежной? - PullRequest
7 голосов
/ 18 октября 2011

Я видел, как люди комментируют непрерывную память Java Heap, а люди говорят обратное. Ну, может кто-нибудь дать мне окончательный ответ и объяснить этот вопрос? Кроме того, существует ли какая-то структура данных в Java Heap, как в Java Stack?

Ответы [ 3 ]

11 голосов
/ 18 октября 2011

Цитирование из JVM spec : Память для кучи не обязательно должна быть смежной. Таким образом, ваш код не должен делать предположений о непрерывности кучи.

6 голосов
/ 18 октября 2011

Реальный ответ: вы не знаете и не должны волноваться. Существуют разные JVM, и никто не дает обещаний ни о чем, кроме спецификации.

2 голосов
/ 18 октября 2011

Это зависит от JVM, но точно не может быть смежным.HotSpot использует кучу поколений, а IBM JDK и JRockit - нет.Я полагаю, что и процессы сборки мусора в IBM и JRockit используют алгоритм очистки / сжатия, который на практике должен приводить к непрерывной куче.

...