JVM内存结构——方法区、栈、堆


JVM内存管理

包括方法区、栈、堆。

注:java程序,运行过程中报内存不足,指的是JVM内存不足,需给JVM扩大内存


1、方法区

1)用于存储 .class 字节码文件(包括方法)

2)java程序运行时,首先会通过类装载器载入类文件中的字节码信息,经过解析后将其装入方法区

3)方法只有一份,通过 this 来区分具体是哪个在调用

在这里插入图片描述

2、栈

1)栈用于存放程序运行当中的局部变量(包括参数)

2)一个运行的java程序从开始到结束会有多次方法的调用。JVM会为每一个方法的调用在栈中分配一个对应的空间,这个空间称为方法的栈帧

3)一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据

4)当某一个方法调用完成后,其对应的栈帧将被清除

5)局部变量的生命周期:调用方法时存在栈中,方法调用结束时与栈帧一并消失

在这里插入图片描述

3、堆

1)JVM会在其内存空间开辟一个称为“堆”的存储空间,用于存储所有new出来的对象(包括成员变量)

2)成员变量的生命周期:创建(new)对象时存在堆中,对象被GC回收时一并消失

3)垃圾:没有任何引用所指向的对象;垃圾回收器(GC)不定时到堆中查看,看到垃圾则自动回收;回收过程是透明的,并不是一看到垃圾就马上回收

4)若想让它快一些收垃圾,可以调用 System.gc()

在这里插入图片描述

在这里插入图片描述

注:java中有个GC垃圾回收器,会自动垃圾回收;c++需自己回收垃圾

5)内存泄漏:不再使用的对象没有被及时的回收

建议:当对象不再使用时应及时将引用设置为null


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值