小白Java笔记——垃圾回收机制

一、传统的C/C++回收机制
     在C/C++中,对象占用的内存在程序结束之前会一直被霸占,被明确释放之前不能分配给其他对象。
     显式进行垃圾回收:需要程序员自己负责回收已经分配的内存。
     也就引出了“内存泄漏”:一些分配出去的内存没有被及时后手,会引起系统运行速度下降,甚至导致程序瘫痪。
     由此可以得出缺点:1.程序忘记及时回收无用内存,导致内存泄漏;
                    2.程序错误地回收程序核心类库的内存,使系统瘫痪。
二、Java回收机制
     GC(Garbage Collection):称作垃圾回收。Java不需要程序员自己控制内存回收,而是有JRE在后台回收不再使用的内存。通常JRE会提供一个后台县城来进行检测和控制(一般在CPU空闲或者没有太多内存时自动回收)。
     这时就涉及到Java的内存问题了,简单说一下:
     Java的堆内存是一个运行时数据区,用于存储类的实例对象;Java虚拟机的堆内存中存储正在运行的应用程序所建立的所有对象。
     Java中,当没有对象引用指向原先分配的某对象时,这就成了垃圾。
     GC的特点:1.回收无用对象的内存空间,都是JVM堆内存里的,且对物理空间无能为力如数据库连接,磁盘I/O等;
              2.给不再使用的对象引用变量设置为null,可以更快的回收;
              3.有不可预知性。不同的JVM采用不同的垃圾回收机制,如回收时间的不同,程序员虽然可以通过finalize()方法和System.gc()方法来建议,但不能做到精确控制。
              4.精确性:一是精确标记活着的对象。是完全回收所有废弃对象的前提,保证不会出现内存泄漏;二是精确定位对象之间的引用关系。是实现归并和复制的必要条件。
三、收获
    由上就引出了平时写Java代码时,要遵循一个基本原则:对于不再需要的对象,就不要再引用他们。

之后还会有细节补充,,,,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值