Java的内存划分作用、和内存的清理

Java的内存划分作用、和内存的清理

内存概述
内存是计算机中的重要原件,临时存储区域,作用是运行程序。
我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。
必须放进内存中才能运行,运行完毕后会清空内存。
Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。
java中的内存分配

区域名称作用
寄存器给CPU使用,和我们开发无关。
本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区存储可以运行的class文件。
堆内存存储对象或者数组,new来创建的,都存储在堆内存。
方法栈方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

内存清理
1、JAVA中的垃圾回收机制是对堆堆内存中的对象进行的,特点:

 (1)无法精确的控制垃圾回收运行的时间,这个完全由JAVA虚拟机根据系统内存问题而定,不过我们可以强制进行垃圾回收(System.gc()或者Runtime.getRuntime().gc()),但是这样做不是明智的

(2)进行垃圾回收之前,会先调用finalize()方法,该方法主要是进行一些堆内存资源的管理工作,可能会使一部分未被引用的对象重新获得引用

2、JAVA对象的生命周期:(这三个状态由李刚老师提出,我根据自己的见解重新进行了命名)

              存活(live)                 可复活(recovery)                  死亡(dead)

 存活状态:在被使用中

 可复活状态:对象暂时未被使用,但是随时会被调用使用

 死亡状态:不会再使用的,等待被回收的对象

3、关于JAVA中的几种引用类型

(1)强引用:很常见的一种引用方式,是我们经常使用的一种引用方式,

(2)软引用(SoftReference):当系统内存不足时,该种引用关联的对象很可能会被回收掉,这个引用常用语内存敏感的程序中

(3)弱引用(WeakReference):同软引用类似,但是该种引用关联的对象在JVM进行垃圾回收时总是会被回收的

(4)虚引用(PhantomReference):结合引用队列进行使用,主要用于跟踪对象

如果希望尽可能的减小程序在其生命周期中所占用的内存大小时,使用这些引用就很有用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值