作者s35300792001 (小朱)
看板java
标题[问题] 关於记忆体管理和finalize方法
时间Mon Feb 2 22:02:35 2009
刚在书上看到循环参考部分
书上说java如果把物件参考设成null就会被残存记忆体程序收集掉
书上提供一个技巧说可以避开循环参考
不过我真是有看没有懂
有人可以解释一下?
原本程式码:
class a
{
b b1;
a()
{
b1 = new b();
}
}
class b
{
a a1;
b()
{
a1 = new a();
}
}
public class app
{
public static void main(String[] arg)
{
a obj = new a();
obj = null; //循环参考在此
}
}
技巧程式码:
class Data
{
public int intdata = 0;
SuperGiantSizeClass sgsc;
Data()
{
intdata = 1;
sgsc = new SuperGiantSizeClass(100000000);
}
protected void finalize()
{
sgsc = null;
}
}
public class app
{
public static void main(String[] arg)
{
Data d = new Data();
d = null;
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.122.138.175
※ 编辑: s35300792001 来自: 122.122.138.175 (02/02 22:04)
1F:推 PsMonkey:==.==== 你又没讲书上的技巧是啥? 02/02 23:10
2F:推 stukk:应该是想强调finalize的使用方法吧,书上应该都有说才是.. 02/03 08:16
3F:→ s35300792001:回一楼...书上的技巧就是我打上的code... 02/04 03:11
4F:推 qrtt1:作者不可能只给 code 不解释技巧在那吧? 如果是, 那很糟. 02/04 09:38
※ 编辑: s35300792001 来自: 122.122.138.175 (02/04 22:31)
5F:→ s35300792001:我把他原本的说的循环参考的例子写上去了 02/04 22:32
6F:推 PsMonkey:什麽鬼啊.... 到底是哪本书、它到底怎麽写的? 02/05 00:09
7F:→ s35300792001:书名java 2 Black Book彻底研究 02/07 12:37