to mem_fox
你怎么判断,对象不要使用了。

定时判断?使用的线程监控嘛

是不是这样

如果是ejb2.0,bea7.0作为应用服务器的话,这个问题就不成为问题了,你可以只取一个字段name!

参考《设计模式》中的FlyWeight模式

> 参考《设计模式》中的FlyWeight模式
flyWeight是为了减少系统中对象的数量吧
有一个对象池,等用到时再用context去给改对象设定
一些值,

对于怕对象过大,可以这么干
比如我有一个Article对象,其中有个content属性在
数据库里是clob,可能非常大
这时候你就可以这么做
1,分隔类层次,class article 只提供基础信息,
而DetailArticle继承Article,提供content属性
hibernate有篇文章也建议这么做
2,getContent方法做成lazy的
String getContent()
{
if(content==null)
content=loadContentFromDatabase();
return content;
}

你的User可以这么干,采用聚合和lazy get
public class User()
{
private String userName;
private UserDetail userDetail;
public void getAddress()
{
if(userDetail==null)
userDetail=loadUserDetail();
return userDetail.getAddress();
}
//其他不常用的属性同上处理
}

public class UserDetail()
{
private String address;
private String tele;
private String description;
//....
//getter setter for all properties;
}

延迟初始化应该是等到要用某个属性时才从DB中读取。

测试一下。

很多回复都很有用啊
不过我提出一个问题,你真有那么多东西怀疑降低效率嘛?
计算过你的系统的目标用户没有?
如果你真的认为有
《Java Pitfalls》的96页可以给你提供帮助
就是楼上的LRU算法的实际实现