Java基础-内存管理

对象内存管理

  • 编译好的Java程序要运行在JVM中

  • 程序,无论是代码还是数据,都要存储在内存中,JVM为Java程序提供并管理所需要的内存空间

  • JVM在其内存开辟了"堆"、“栈”、"方法区"三个区域,分别存储不同的数据;

在这里插入图片描述

垃圾回收机制

  • 垃圾回收器(GC)是JVM自带的一个线程(自动运行着的程序),用于回收没有任何引用指向的对象;

  • Java程序员不用担心内存管理,因为GC会自动进行回收管理;

  • GC的回收对程序员来说是透明的,并不一定一发现有无引用的对象,就立刻回收;

  • System.gc():用于建议虚拟机马上调度GC线程回收资源,具体的实现策略取决于不同的JVM系统;

堆内存

  • 这部分空间用于存储使用new关键字所创建的对象,成员变量是对象的属性,也在堆中;

  • 对象的声明周期:创建对象时存在堆中,对象被GC回收时消失;

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

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

在这里插入图片描述

非堆–栈

  • 这部分空间用于存储程序运行时(正在调用中的)在方法中声明的所有局部变量;

  • 调用方法时JVM在栈中为该方法分配一个对应的空间,也称为栈帧,栈帧中包含所有的局部变量(包括参数);

  • 当方法调用结束时,栈帧消失;

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

在这里插入图片描述

非堆–方法区

  • 这部分空间用于存放类的信息(包括方法);

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

  • 所有对象共享类的方法,方法仅有一份,通过this来区分具体的对象;

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值