假设我在session中存储了一个叫user的对象,那么取出这个对象最普遍的方法就是:User user = null;user = (User)session.getAttribute("user");但今天看到有个朋友他是这样写的:User user = new User();user = (User)session.getAttribute("user");我的问题就是第二种方法与第一种方法到底有什么区别?我觉得第二种方法只是对user对象赋值,在内存中其实存在两个对象,一个是session中的,一个是new的,而第一种在内存中只有一个session中的对象,不知道我的理解对不对?
解决方案 »
- 求助!各位大侠,一个关于hibernate的多对多的问题!
- 紧急 网页已经过期 问题
- 关于Web打印密码的问题,在线等
- java查询oracle数据库问题!
- funcreal小灶:通用数据库连接类的可行性
- openfire登陆大写变小写
- 100分 ==》请高手看看jsp+sql2000出了什么错误!
- 50分问:如何判断数据库中表的多少
- 为什么会出现异常呢?
- 各位仁兄,求求你们了,告诉我哪儿可以免费下载JRUN STUDIO ??下载网站完整域名???我着急的要命!!
- 急求助:我将写好的程序发布到服务器,在客户端上传文件时候显示当前路径没有文件
- javamail如何发送图文并茂的邮件,急急急!!!
第二种被赋值后new的User会在空闲的时候被垃圾回收装置回收
是的,但是new出来的那个对象已经没有任何引用指向它,成为了“垃圾”,而且是不必要产生的垃圾,纯粹的浪费资源
所以千万不要写成那样,太愚蠢了
所以我们在编程的时候要注意一点,就是尽可能得减少垃圾的产生,从某种意义上将就是尽可能少new对象出来,因为对象会占用内存空间、在回收的时候还会占用很多系统资源打个比方,对象就好比塑料袋,你不可能不用塑料袋,但是你必须少用塑料袋,因为生产塑料袋需要资源,而且塑料袋被丢弃之后还会污染环境
new对象会占用内存,回收对象会影响性能(sun公司的jvm尤其如此)