在java中如果一个长生命周期的对象属性引用另一个一个对象的属性,是否会引发内存泄露?

例如:public final static Person p = new Person();
public void set(){
Person p1 = new Person("ONE");
p.setName(p1.getName());
}
如果这个P一直不释放,那么P1会释放掉吗?没分了,帮个忙,谢谢
问题的主要原因是这样,需要做一个缓存,这个缓存里的集合中的对象是从其他服务器传来的对象,比较大,这两个对象的转换就涉及到p.setName(p1.getName());,所以跟静态内存区应该没什么关系,就是问一下如果这个缓存不清空,那么传来的对象是否会被释放

第1个回答  2013-02-04
“one”是string对象,是存在静态内存区,所以,p1存不存在跟p没有多少关系
所有string对象都在静态内存区,懂不?追问

one只是举例子,就是说有这样一个对象包含一个String类型的属性,并且被另一个对象引用了,那之前的对象是否会被释放

追答

这个string对象只存在对象一个,,只要有引用就不会释放

本回答被提问者和网友采纳
第2个回答  2013-02-04
P1是会释放的。至于那个属性是否释放要看setName这个方法是复制还是直接引用赋值
第3个回答  2013-02-04
方法执行完P1就没了,被回收了!再次执行会又重新创建!

我想p1会释放。字符串“ONE”对象不会!
第4个回答  2013-02-04
缓存 满了 自己 释放缓存没满 可以强制释放~
相似回答