Native Method Stacks:本地方法栈:线程私有
本地方法栈和JVM栈大体相同,区别是JVM Stacks是为java方法服务,Native Method Stacks是为本地方法服务。
Heap:堆:线程共享
堆当中保存着所有的对象的实例,创建的对象和数组都保存在 Java 堆内存中,也是垃圾收集器进行垃圾收集的最重要的内存区域。关于垃圾回收器和垃圾回收算法,下节再讲。
可以通过这几个指令设置堆大小
Method Area:方法区:线程共享
方法区即我们常说的永久代(Perm Space (1.8之前,之后是Meta Space 元空间,注意的是,Perm Space 和Meta Space是方法区不同版本的具体实现,方法区是个抽象的概念)), 用于存储被 JVM 加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。还有运行时常量池(Runtime Constant Pool)
Runtime Constant Pool:运行时常量池
用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。
Directory Memory 直接内存
直接内存 ,OS管理,Nio访问的就是直接内存(零拷贝)
参考文档 1.官方文档:https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5 2.《深入理解Java虚拟机》 3.JSR规范整理:https://www.iteye.com/blog/manysysy-1046963 4.JSR133中文版:http://ifeve.com/wp-content/uploads/2014/03/JSR133%E4%B8%AD%E6%96%87%E7%89%881.pdf 5.JSR133: http://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf