对象的销毁与垃圾回收机制
来源:互联网 发布:linux查看所有进程命令 编辑:程序博客网 时间:2024/05/17 00:12
每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址将会被回收,在其他语言中需要手动回收废弃的对象,但是java语言拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器将回收物用户的占用内存的资源。
对象被视为垃圾的情况主要包括:
1.对象引用超过其作用范围,则这个对象将被视为垃圾。
2.将对象赋值为null。
java垃圾回收机制运行原理是:
java运行环境周期地检测某个实体是否已不再被任何对象所引用,如果发现这样的实体,就释放实体占有的内存。因此,java编程人员不必像C++程序员那样,要时刻自己检查哪些对象应该释放内存。
没有实体的对象称为空对象。空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,程序在运行时会出现异常:NullPointerException。由于对象是动态地分配实体,所以java的编译器对空对象不做检查。因此,我们应该使用空对象。
而且垃圾回收器只能回收由new 操作符创建的对象,如果某些对象不是通过new操作符在内存中获取一块内存区域,这种对象可能不被垃圾回收机制所收取。在java语言中提供一个finalize()方法,这个方法是Object类的方法,被声明为protected,用户可以在自己的类中定义这个方法,如果用户在类中定义了finalize()方法,在垃圾回收时应首先调用该方法,并且在下一次垃圾回收动作发生时,才能真正回收对象占用的内存。
(注:垃圾回收或是finalize()方法不保证一定会发生,如java虚拟机面临内存损耗待尽的情形,它是不会执行垃圾回收的。)
由于垃圾回收不受人为控制,具体执行时间也不确定,所以finalize()方法也就无法执行,为此,java提供了System.gc()方法强制启动垃圾回收器。
- 对象的销毁与垃圾回收机制
- 垃圾回收机制(对象的回收)
- PHP的垃圾回收机制及session的销毁原理
- Java垃圾回收机制与典型的垃圾回收算法
- 垃圾回收机制与典型的垃圾回收算法
- Java垃圾回收机制与典型的垃圾回收算法
- Java垃圾回收机制与典型的垃圾回收算法
- Java垃圾回收机制与典型的垃圾回收算法
- Java垃圾回收机制与典型的垃圾回收算法
- Java垃圾回收机制与典型的垃圾回收算法
- c# -- 对象销毁和垃圾回收
- c# -- 对象销毁和垃圾回收
- c# -- 对象销毁和垃圾回收
- C# 对象销毁和垃圾回收
- c# -- 对象销毁和垃圾回收
- python基础 之 对象销毁(垃圾回收)
- Java与C#的垃圾回收机制
- Java与C#的垃圾回收机制
- ImageView
- android中fragment与activity之间通信原理以及例子
- 获取用户当前正在操作的Activity的类名
- 我的第一个Android程序-计算器
- SAT阅读题Sentence Completion第四套
- 对象的销毁与垃圾回收机制
- 224.Basic Calculator
- ubuntu14.04+CUDA7.0+cuDNN-v2+OPENCV3.0 caffe环境配置
- maven nexus 搭建私服
- python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。
- 解决 Cannot run program "/home/zhengyx/git/jymall-android-master/${aapt}"
- 使用Spring的LdapTemplate进行LDAP操作
- IOS 资源文件的读取
- SylixOS ARM BSP 第二篇【startup.S】