Поскольку Область метода является логической концепцией, описанной в спецификации, каждая JVM имеет Область метода, хотя это не означает, что она должна быть отражена в коде реализации. Аналогично, Пространство кучи Java определено в качестве концепции в спецификации как хранилище всех объектов Java, поэтому все объекты Java хранятся в куче, по определению, независимо от того, как это на самом деле реализовано. .
В отличие от Perm Gen, который содержал объекты Java и структуры данных JVM, отличные от объектов Java, структура памяти HotSpot JVM для Java 8 имеет четкое разделение. Old Gen все еще содержит только объекты Java, тогда как Metaspace содержит только данные, специфичные для JVM, и не содержит объектов Java. Поэтому объекты Java, ранее хранящиеся в Perm Gen, были перемещены в Old Gen. Поскольку область методов содержит артефакты «такие как пул констант во время выполнения, данные полей и методов, а также код для методов и конструкторов…», в других слова не Java-объекты (пул может содержать ссылки на объекты кучи), теперь он является частью Metaspace.
Теперь вы можете обсудить, является ли Metaspace реализацией области метода или может содержать больше, чем область метода, но это не имеет практического значения. На практике JVM содержит код для управления Metaspace и содержащимися в нем артефактами, и ему не нужно заботиться о том, действительно ли эти артефакты относятся к тому, что в спецификации описывается как «Область метода» или нет.