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