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

来源:互联网 发布:数据防泄漏国内厂家 编辑:程序博客网 时间:2024/05/16 15:27

一、传统的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代码时,要遵循一个基本原则:对于不再需要的对象,就不要再引用他们。

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

原创粉丝点击