CNDEV
CNDEV.ORG
当前在线
论坛
CBD
程序员情感CBD
程序员见面交流会
CBD开发区
Java/J2ME
.NET/C#
数据库
Delphi/BCB
Visual C
其它
修真养身
中国象棋
纪念日
谈钱太俗,还是投机吧
听音乐
iCosta
资源共享
一隅
好文共赏
看电影看美剧
待定
狗屎
雪域召唤
工作流
专业显摆区
语录
情感
批评与自我批评
爱情故事
发牢骚
看三点区
游戏
CNDEV-CS/WOW
浩宇长空
生活
家有XPH
我爱学英语
美食天地ORG
半调子体育迷
观澳园友邻
搞笑奇文
拍照片
我读书我存在
论坛系统
超级垃圾站
系统建议及BUG
系统测试
中国开发网
: 论坛:
程序员情感CBD
: 贴子 379883
bjwf
:
HashMap 里放的啥?是不是哪里还有那个对象的引用?
[阅读: 406] 2006-08-22 09:24:30
<空>
相关信息:
java高人乱入,内存管理问题。
(499字)
(
老玉米
[626]
2006-08-22 09:22
)
你放的啥东西进去?
(空) (
乌烟
[373]
2006-08-22 09:23
)
自己定义的一个类HashMap<String,Employee>
(空) (
老玉米
[385]
2006-08-22 09:24
)
Employee 的定义
(2569字)
(
老玉米
[424]
2006-08-22 09:27
)
我不是很sure String在java里是怎么管理的...难道是这个地方出了问题?
(空) (
老玉米
[372]
2006-08-22 09:29
)
不是String,是Employee,String仍是值类型。
(空) (
乌烟
[334]
2006-08-22 09:31
)
String是值类型啊?.net里倒全都搞成对象类型了
(空) (
tweety
[457]
2006-08-22 09:33
)
那就没有道理了,我的Employee类里面所有的field除了int就是String
(18字)
(
老玉米
[409]
2006-08-22 09:33
)
嘎嘎,Employee是ref。
(空) (
乌烟
[414]
2006-08-22 09:34
)
是啊,可是我除了在HashMap里,别处没有hold得ref啊.理论上在被替换后,就应该处于可以被收集的状态阿
(空) (
老玉米
[430]
2006-08-22 09:37
)
hushmap里的put不一定就unref原来那个.这得看它的实现.
(空) (
bjwf
[439]
2006-08-22 09:38
)
就是针对标准得HashMap啊.java不熟悉,实现是什么样的我不清楚.
(空) (
老玉米
[458]
2006-08-22 09:43
)
你的问题出在这里:
(95字)
(
bjwf
[387]
2006-08-22 09:37
)
1.没有,因为我的只写了很少的代码,现在在做unittest,所以很确定这个是没有的.
(59字)
(
老玉米
[371]
2006-08-22 09:40
)
2我也不确定,所以建议看一下hashmap的源代码.
(空) (
bjwf
[365]
2006-08-22 09:42
)
这个哪有源代码...等我晚上写个更direct的程序测试一下这个HashMap
(空) (
老玉米
[384]
2006-08-22 09:44
)
jdk目录下有个src.zip。
(空) (
乌烟
[778]
2006-08-22 09:45
)
看源码没必要,看些best practice应该更有帮助。不要首先怀疑jdk。
(空) (
乌烟
[343]
2006-08-22 09:46
)
public Object put(Object key, Object value) {
(535字)
(
空山新雨
[680]
2006-08-22 09:47
)
Wrong. String is reference type
(空) (
holly
[377]
2006-08-22 10:01
)
把字符型字段全注了测试一下
(空) (
tweety
[372]
2006-08-22 09:37
)
VO诱奸VO,我烦死这ValueObject了。
(空) (
乌烟
[373]
2006-08-22 09:32
)
Can I have the code you use for putting employees into the HashMap?
(49字)
(
空山新雨
[359]
2006-08-22 09:46
)
GC不是你不管那东西的时候它就给你清理了,非托管资源要自己释放/有时候现实地赋值为null能通知GC进行清理/必要的时候要finallize/析构是不管用的。
(空) (
乌烟
[453]
2006-08-22 09:26
)
应该没有非托管资源.
(空) (
老玉米
[357]
2006-08-22 09:27
)
我说的是几个原则,经验之谈啊。
(空) (
乌烟
[326]
2006-08-22 09:29
)
你像空山说的那样先赋为null再put进去的话还会出这个问题么?
(空) (
tweety
[347]
2006-08-22 09:29
)
赋值为null可以通知GC这玩意儿可以清理了,还有就是要立即清理需finallize。
(空) (
乌烟
[457]
2006-08-22 09:30
)
HashMap 里放的啥?是不是哪里还有那个对象的引用?
(空) (
bjwf
[405]
2006-08-22 09:24
)
That's because you still keep reference somewhere in your program.
(289字)
(
空山新雨
[453]
2006-08-22 09:24
)
说得比较靠谱,符合我说的原则之一。
(空) (
乌烟
[355]
2006-08-22 09:28
)
你的意思,用完就搞成 Null,剩下的就让JVM来搞了?
(空) (
pcplayer
[371]
2006-08-22 09:28
)
Yes. And you MUST have a good finalize method if you have external resources.
(空) (
空山新雨
[451]
2006-08-22 09:36
)
牛,要是我也能用英语忽悠那该多好啊。。。
(10字)
(
乌烟
[384]
2006-08-22 09:39
)
这辈子吧。明天就开始。不晚。
(空) (
茶壶
[322]
2006-08-22 09:40
)
呵。这是老玉米的风格,真正的程序他才不会这样写,但在写之前,丫就是没事乱来试试承受程度。
(50字)
(
茶壶
[405]
2006-08-22 09:31
)
仔细看看我代码再说吧。。感觉扯远了。
(空) (
老玉米
[349]
2006-08-22 09:35
)
多么经典OutOfMemory又出现了。你不要指望jvm在你需要的时候做GC,什么时候做,基本上是鬼知道。
(空) (
疯子张
[483]
2006-08-22 09:26
)
前段时间偶们的系统常出现这个的异常,不过解决了.
(空) (
wynnhjg
[399]
2006-08-22 09:34
)
Several articles:
(空) (
空山新雨
[326]
2006-08-22 09:40
)
http://www-128.ibm.com/developerworks/java/library/j-leaks/
(空) (
空山新雨
[425]
2006-08-22 09:40
)
http://www.javaworld.com/javaworld/javaqa/1999-08/04-qa-leaks.html
(空) (
空山新雨
[406]
2006-08-22 09:41
)
Old Corn, can I have the code you use to put the Employee objects in HashMap?
(空) (
空山新雨
[341]
2006-08-22 09:49
)
搞定冇?
(空) (
周星驰
[342]
2006-08-22 09:50
)
贴代码先
(空) (
holly
[337]
2006-08-22 10:05
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录