我自己琢磨了下,也觉得应该在乙处,才能释放b指向的内存空间,在甲处,对b的引用还是存在的。顺便问一下熟悉c/c++的朋友,如果再c++中的类似情况里(没有delete b的动作)在乙处会是释放b对应的内存吗?
解决方案 »
- java JTree 实现checkbox树 getTreeCellRendererComponent 错误
- 内部类小问题
- 输入结点的前序序列,构造一棵二叉树
- 如何去掉字符串后面所有的逗号
- Java中如何取得JNI函数参数为jobject类型的直
- 非常简单的算法问题,但是想不明白请教各位。。。
- 请教:想学习JAVA,请各位提点一下,该从哪方面入手?能否推荐一些好的资料,谢谢!
- 请问java怎么做报表????
- 头疼!!如何在jbuilder中通过点击按钮同时向两个表添加记录?
- 如何实现表格在同一个 column 的不同 cell 放进不同种类的组件,各大侠提点一下!---我只有41分啦
- 急问,eclipse有什么插件能单步调试jsp的呢?
- 请问麻将,升级等牌类游戏的算法?
我知道
//--
圾回收的时间是无法预见的,而且是自动进行的
//--
所以我的例子中有System.gc();来显示的调用垃圾回收,我是想确定当垃圾回收发生在以上代码执行到甲、乙两处时是否认为b的引用存在,是否会回收b指向的空间。
class TestGC {
public static void main(String[] args) {
A a=new A();
a.foo();
System.out.println("乙处垃圾回收:");
System.gc();//乙处垃圾回收
a.foo1();
}}class A {
public A(){}
public void foo() {
B b=new B();
b.foo();
//本函数中再也没有使用过B
System.out.println("甲处垃圾回收:");
System.gc();//甲处垃圾回收
}
public void foo1(){};}class B
{
public B(){}
public void foo()
{
//do something;
}
public void finalize() {
System.out.println("finalizing...");
}
}圾回收的时间是无法预见的,而且是自动进行的;如果调用System.gc()那么便会执行对象的finalize()函数(如果对象有的话)。
System.gc();是你知道要干什么的,而“任何类只要不再被引用”是计算机内部的!
他的意思是说,当前对象引址不在指向对象了,这时系统会自动回收的!!
//--
圾回收的时间是无法预见的,而且是自动进行的;如果调用System.gc()那么便会执行对象的finalize()函数(如果对象有的话)。
//--
是不是说在乙处,b已经没有在被引用了,如果程序执行到此时进行了垃圾回收的话,则可以收回b以前指向空间就可以被回收了。
调用System.gc()不等于进行垃圾回收,是吗?