楼主还是以c或c++的思想来考虑java,其实java可以为你管理大部分内存,除非用到jni,你才需要手动管理,看看《Thinking in java》
感谢二位,请帮忙再次确认。1. 看来不用myVector.getAt(i) = null;了?确认 myVector.clear(); myVector = null; 后JVM就能够识别他是垃圾吗:)2. 如果是这样,返回的引用不释放,栈上分配的这个String就释放不了? 需要显式调用 public static void main(String[] args) { String myString = ""; myString = getString(); myString = null; //需要这样显式调用吗? }3. 循环引用在很多模式中都有应用。加上了 protected void CSon::finalize() { this._parent = null; //if I do not add here, whether memoryleak comes up? } 后,还有问题吗?如果有,该如何解决?可否提示一二。俺也不想把java想复杂了,问题是一个服务运行几星期后就会完蛋,叫我怎么办啊:(
原本java设计出来就是想解脱程序员的苦恼的 呵呵 但是有时写程序 不去了解它回收机制 会这样想的了 建议看看thik in java里面讲的还蛮清楚的
only No 2. Java 中永远是值传递。return reference的正确理解是传递reference的值。(看来我们需要搞清楚三个东西的区别) String myString = "123"; myString是“引用变量”,“123”是对象,对象的引用(比如String@eghegye)是myString 的值。/** Currently I am not very sure how java handles String. It is on heap or stack? when I call getString(), returns pointer or copy all the string out of the stack? */ myString handle(我喜欢把引用变量称为句柄) the reference of "123"。 two myString are on stack,when u call getString(), returns the reference of what myString is holding. "all the string out of the stack" ? 晕。None object on stack in Java。myString = null; //需要这样显式调用吗? 不需要。
myVector.clear();
myVector = null;
后JVM就能够识别他是垃圾吗:)2. 如果是这样,返回的引用不释放,栈上分配的这个String就释放不了?
需要显式调用
public static void main(String[] args)
{
String myString = "";
myString = getString();
myString = null; //需要这样显式调用吗?
}3. 循环引用在很多模式中都有应用。加上了
protected void CSon::finalize()
{
this._parent = null; //if I do not add here, whether memoryleak comes up?
}
后,还有问题吗?如果有,该如何解决?可否提示一二。俺也不想把java想复杂了,问题是一个服务运行几星期后就会完蛋,叫我怎么办啊:(
呵呵 但是有时写程序 不去了解它回收机制 会这样想的了
建议看看thik in java里面讲的还蛮清楚的
Java 中永远是值传递。return reference的正确理解是传递reference的值。(看来我们需要搞清楚三个东西的区别)
String myString = "123";
myString是“引用变量”,“123”是对象,对象的引用(比如String@eghegye)是myString 的值。/**
Currently I am not very sure how java handles String.
It is on heap or stack?
when I call getString(), returns pointer or copy all the string out of the stack?
*/
myString handle(我喜欢把引用变量称为句柄) the reference of "123"。
two myString are on stack,when u call getString(), returns the reference of what myString
is holding.
"all the string out of the stack" ? 晕。None object on stack in Java。myString = null; //需要这样显式调用吗?
不需要。
2、heap;returns pointer
3、不需要this._parent = null。这属于交叉引用,现在的垃圾收集器都简单采用引用计数的方法识别垃圾,所以交叉引用不会妨碍垃圾收集
4、对Corba不清楚
朋友的是Java程序吗?感觉CParent,CSon有点别扭。
:)