首页 > 代码库 > Java的内存回收机制详解
Java的内存回收机制详解
http://blog.csdn.net/mengern/article/details/38150431
Java中提供了垃圾强制回收机制的方法System.gc(),但是系统并不保证会立即进行垃圾回收,而是JVM根据定义的一套垃圾回收算法来确定,算法用来提高垃圾回收的效率。
判断一个存储单元是否是垃圾的依据是:该存储单元所对应的对象是否仍被程序所用,即是否有引用指向该对象。Java的垃圾回收器自动扫描对象的动态内存区,对所引用的对象加标记,然后把没有引用的对象作为垃圾收集起来并释放出去。
Java没有提供析构方法,但提供了一个类似的方法:protected void finalize();
程序说明:
[java] view plain copy
- class J_Book {
- private String name;
- J_Book(String name) {
- this.name = name;
- }
- // 覆盖默认的finalize方法
- protected void finalize() {
- System.out.println("Book,\"" + name + "\",is destroyed!");
- }
- }
- public class J_Finalize {
- public static void main(String[] args) {
- J_Book book1 = new J_Book("Gone with wind");
- // 匿名的实例,被Java判定为垃圾内存,会被当做垃圾回收
- new J_Book("Java How to Program");
- new J_Book("Roman Holiday");
- book1 = new J_Book("Thingking in Java");
- // 强制垃圾回收,注意编译系统不会立刻垃圾回收,由自己的算法来决定何时执行垃圾回收
- System.gc();
- }
- }
程序运行结果:
Book,"Roman Holiday",isdestroyed!
Book,"Java How toProgram",is destroyed!
Book,"Gonewith wind",is destroyed!
说明:上述结果是eclipse在调试模式下得出的!
Java的内存回收机制详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。