您现在的位置是:首页 >

记忆memory JVM Memory

火烧 2021-08-15 16:22:10 1041
JVM Memory   · Stack Memory 栈内存 lt _editio //l gt : 虚拟机的每一个线程都有一个私有的栈 当一个方法被调用时 下面内容被作为一个Frame 帧 lt

JVM Memory  

  · Stack Memory (栈内存)  <_edition//l>: 虚拟机的每一个线程都有一个私有的栈 当一个方法被调用时 下面内容被作为一个Frame (帧) <_edition//l>被创建并且被压入栈中

  + 局部变量 包括基本数据类型 对象的引用和返回值地址

  + 一个自己的操作栈 帧内局部变量进行运算时使用 也用于传递方法的参数和接受方法的返回值

  + 一个当前方法所在类的Runtime constant pool (常量池) <_edition//l>的引用

记忆memory JVM Memory

  方法调用完成时 帧出栈 并销毁 无论方法是正常结束还是有未捕获的异常

  · Heap Memory(堆内存) <_edition//l> : 虚拟机的堆内存保存的是对象 类变量以及实例变量 它被所有线程共享 常说的垃圾回收就是对堆内存的回收

  + +

  |    Stack Memory       | > 线程私有

  + +

  |         ^             | +

  + | +        |

  |         |             |        |

  + Heap Memory +        |

  |         |             |        | > 线程共享

  + | +        |

  |         v             |        |

  + +        |

  |    Method Area        | +

  + +

  当JVM加载一个class时 将该类的一些信息保存到Method Area 包括Runtime constant pool 方法数据 方法和构造器代码 域等 Runtime constant pool 则 包括类名 父类名 静态变量等

  Method Area在逻辑上属于Heap 不过它垃圾回收与Heap可能不同 取决于JVM的实现

lishixinzhi/Article/program/Java/hx/201311/26358  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码