PC是一小块内存空间,用于记录当前线程
执行的字节码指令的地址
。如果执行的是本地方法(native),PC里此时显示Undefined
优点:
特点:
OutOfMemoryError
(内存溢出)冷知识:PC是内存中唯一不会出现OutOfMemoryError
(内存溢出)
Java栈是描述java方法运行过程的内存模型,java虚拟机栈会为每一个即将运行的java方法创建栈帧
用于存储该方法的信息。(如:局部变量表)
特点:
StackOverFlowError
和OutOfMemoryError
StackOverFlowError
java虚拟机不允许Java栈动态扩展,当线程请求栈的深度超过了Java栈的最大深度时,就会抛StackOverFlowError
OutOfMemoryError
允许动态扩展,但可使用内存用完无法动态扩展时,抛OutOfMemoryError
冷知识: StackOverFlowError
可能还有很多内存
本地方法栈是描述本地方法运行过程的内存模型,因为本地方法(native)通常使用c语言,因此本地方法栈也叫C栈。
本地方法栈结构和Java差不多,也会创建栈帧。但当JVM不支持native方法本地方法栈可以不被创建,否则随线程创建和销毁。
堆是用于存放对象的内存空间
特点:
堆可以动态扩展,但无多余内存扩展时会抛OutOfMemoryError
。
未完待续
原文:https://www.cnblogs.com/amberbar/p/11641633.html