Java 8中的Java内存区域

3

我已经阅读了很多关于Java内存区域的文章,但是看起来它们都有些混乱。这主要是由于在Java8中引入了一个新的MetaSpace区域而不是PermGen。现在有一些问题:

  1. 在Java8+中,heap包括哪些区域?
  2. 在Java8之前和Java8+中,static方法和变量存储在哪里?
  3. MetaSpace除了类元数据信息外,还存储其他内容吗?
  4. 内存区域的结构是否取决于JVM的实现?

感谢您的回答。


将您的问题之一输入Google:https://dev59.com/questions/T14d5IYBdhLWcg3wJfpm - markspace
可能是PermGen和Metaspace之间的区别是什么?的重复问题。 - Andreas
#4 当然。内存区域完全由JVM实现定义。 - Andreas
1个回答

13
  • Class metadata (names, types, offsets)
  • Interned strings
  • Symbolic references to other classes and methods
  • So, in addition to class meta-data info, Metaspace also stores other related information that is needed by the Java Virtual Machine during runtime.

  • 符号(名称和签名)
  • 基本数组(例如,字段元数据表示为无符号短整型数组)
  • 方法及其字节码
  • 方法计数器
  • 常量池和CP缓存
  • 注释
  • 所有这些都可以被视为“类元数据”。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接