Java虚拟机内存管理


本篇文章将对Java虚拟机的内存模型进行总结,各个部分的详细内容在后边也会逐步扩展说明。




     从上图中我们可以看出,在虚拟机运行时的数据内存可分为线程共享区和线程独占区。顾名思议,线程共享区代表每个线程都可以共享的内存区,线程独占区,即每一个线程都独有的内存区。

 

下面分别进行详细介绍:


(1)程序计数器




从上图中也对程序计数器也简单的做了介绍,但要注意的是程序计数器是Java虚拟机中唯一的一块不会出错error的内存区域。


(2)Java虚拟机栈




栈帧:当每个方法执行的时候都会创建一个栈帧,Java虚拟机栈就是用来存放栈帧的容器。

  

下面先来看一个图来进行介绍。



       从图中我们可以看出,Java虚拟机栈的容量大小也是有限的,当创建的栈帧超出了他的容量大小,将会报StackOverFlow异常,即栈溢出异常。常见的如 无止境的递归调用,即会出现这个错误。

      与此同时,Java虚拟机栈也会报OutOfMemory异常,当向堆申请内存超出堆本身内存的大小时,将会发生这个错误。


(3)本地方法栈




(4)方法区




(5)Java堆

    



需要说明的是-Xmx -Xms虚拟机参数时为了对虚拟机堆内存进行控制大小的参数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值