黑马程序员技术交流社区
标题:
垃圾回收问题
[打印本页]
作者:
鲍亚坤
时间:
2012-3-27 22:15
标题:
垃圾回收问题
本对象里面有个成员变量是对方对象的引用
对方对象也有个变量指向本对象,即互相持有对方的
引用。
这种情况垃圾收集器是会回收对象吗?(什么时候回收)
作者:
郑洋洋
时间:
2012-3-27 22:27
Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。
你可以手动通过System.gc()进行回收,不过不推荐
作者:
和心愿
时间:
2012-3-27 23:08
JAVA垃圾回收机制的特点
自动性。Java技术提供了一个系统级的线程,即垃圾收集器线程,来跟踪每一块分配出去的内存空间,当Java 虚拟机处于空闲循环时,垃圾收集器线程会自动检查每一块分配出去的内存空间,然后自动回收每一块可以回收的无用的内存块。
不可预期性。一个对象成为了垃圾,但是你不能断言,该对象在这行以后就立刻被清除,甚至有可能当程序结束后,该对象仍然占用内存。像Windows这样的软件常常会出现内存不足的情况,JAVA程序很少出现就是因为可以自动回收内存。然而,因为JAVA也不能保证及时地清除无用的对象,所以JAVA程序也会出现内存不足的情况,只是这种情况很少出现。垃圾收集线程在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。
作者:
魏明明
时间:
2012-3-28 00:02
本帖最后由 魏明明 于 2012-3-28 00:03 编辑
Java的垃圾回收机制是Java虚拟机不定时的自动调用的,用于回收无任何引用的对象占据的内存空间。
Person p = new Studnet();
Studnt s = p;
创建了一个Person类型的 Studnet对象 并把对象的地址赋值给Student ,这时只有当p,s的生命周期都结束了,Student()对象 ,才有可能被垃圾回收机制回收
也就是说 你建的对象 引用变量指向,就不会被回收
作者:
杨华威
时间:
2012-3-28 10:50
对象有被调用时时不会被回收的。
Java的垃圾回收机制是:Java虚拟机在空闲时间不定时的动态回收无任何引用的对象占据的内存空间。
你说的情况是不会被回收的。
作者:
yangshang1
时间:
2012-3-28 12:09
public class TestGc {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Dog(1,"wangwang");
new Dog(2,"haha");
System.gc();
}
}
class Dog
{
public Dog(int id, String name) {
super();
this.id = id;
this.name = name;
}
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;
@Override
protected void finalize() throws Throwable {
super.finalize();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2