转载

技术问答集锦(15)JVM内存模型

  1. 运行时常量池是方法区的一部分;
  2. Class 文件中的常量池(编译器生成的各种字面量和符号引用)会在类加载时被放入这个区域
  3. 除了 在编译期生成的常量,还允许动态生成 ,例如 String 类的 intern() 。这部分常量也会被放入运行时常量池;

在 JDK1.7之前,HotSpot 使用永久代实现方法区;HotSpot 使用 GC 分代实现方法区带来了很大便利;

从 JDK1.7 开始 HotSpot 开始移除永久代。其中符号引用(Symbols)被移动到 Native Heap中,字符串常量和类引用被移动到 Java Heap中。

在 JDK1.8 中,永久代已完全被元空间(Meatspace)所取代。 元空间的本质和永久代类似,都是对JVM规范中方法区的实现 。不过元空间与永久代之间最大的区别在于: 元空间并不在虚拟机中,而是使用本地内存 。因此, 默认情况下,元空间的大小仅受本地内存限制

原文  https://juejin.im/post/5adefec26fb9a07ac85a0dea
正文到此结束
Loading...