笔记笔记 — JVM内存结构内存结构
Java虚拟机(Java Virtual Machine,简称JVM),Java的“一处编译,处处运行”,就是因为Java程序编译成字节码文件后可以在任何计算机的JVM上执
行,所以JVM是我们学习Java的重点之一。
JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area)。
下面我们从每个区域的用途,涉及的问题等方面来简单的说一说JVM的内存结构。
方法区方法区
作用:用于存放已被加载的类信息、常量、静态变量、即时编译器(JIT)编译后的代码等数据。
所有线程共享方法区。所有线程共享方法区。
方法区内存可以动态扩展,动态扩展失败会抛出 OutOfMemoryError 异常。
运行时常量池:是方法区的一部分。
作用:Class 文件中的常量池(编译器生成的各种字面量和符号引用),会在类加载后被放入这个区域。
在jdk1.6之前,方法区是通过永久代的方式永久代的方式实现的,此时运行时常量池中有字符串常量池。而通过逐步调整,在jdk1.8之后方法区改为通过元空间实元空间实
现现且挪到了本地内存,而字符串常量池挪到了Java堆中。
Java堆堆
评论0