java虚拟机-运行时内存

jvm内存分布图

  • 线程独有内存:程序计数器,虚拟机栈,本地方法
  • 非线程独有:方法区,堆
  1. 程序计数器:用于记录当前线程的字节码行数,是线程独有,该内存区域是Java虚拟机唯一没有规定任何OutOfMemoryError的区域。
  2. 虚拟机栈:用于存储局部变量,是线程独有,局部变量是在编译的时候已经确认后,方法运行时候的栈是已经确认好的。虚拟机栈规定了2种异常情况,一种是线程请求栈的深度大于虚拟机栈所允许的深度,这时候将会抛出StackOverflowError异常,如果当Java虚拟机允许动态扩展虚拟机栈的时候,当扩展的时候没办法分配到内存的时候就会报OutOfMemoryError异常。
  3. 本地方法栈:与虚拟机栈类似,只是本地方法执行native方法。
  4. 堆:存储所有线程的共享对象实例,可以动态扩展,当没有内存进行扩展的时候,堆抛出OutOfMemoryError异常。
  5. 方法区:这个也是线程共享的内存区域,存储被虚拟机加载的类信息、常量、静态变量即时编译的代码数据等。方法区一般很少回收,经常被称为永久区,但也是可以被回收,主要针对常量与类型的卸载。在方法区也规定当方法区无法满足内存分布的时候,将会抛出OutOfMemoryError异常

  6. 虚拟机堆栈参数设置     

  7.   -Xss 每个栈的大小

      -Xms 初始化堆大小,-Xmx 最大堆大小

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值