类加载器子系统和方法区:
从文件系统中加载class文件,加载类信息。加载的信息存放于一个叫做方法区的内存空间。
方法区中包括: 类信息,常量池(字符串字面量和数字常量)
堆:
主要内存空间。存放对象的实例。线程共享
直接内存:
NIO允许Java程序直接访问直接内存。
不受JVM内存 -Xmx 最大堆大小限制。不属于堆内存。直接内存速率高于堆内存。
读写频繁的场合可能会用到直接内存,与系统内存挂钩。
垃圾回收系统
回收java堆,方法区,直接内存都可以回收。java所有的对象的释放都是隐式的。
垃圾回收系统后台默默运行,标示和释放对象,实现全自动化管理。
虚拟机栈
每一个虚拟机线程都有一个私有的栈,栈在线程创建的时候被创建。栈保存着帧信息。
栈中保存方法中的局部变量,方法参数,和程序的调用,返回相关。
本地方法栈
本地方法栈和虚拟机栈类似,虚拟机栈用于方法的调用。本地方法栈则用于本地方法(Native API)的调用。
Java虚拟机的重要拓展之一,不同的操作系统本地方法的API也不一样。
程序计数器
线程私有,字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,
分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完。