java 板


LINE

※ 引述《sysc (和平时多准备)》之铭言: : ※ 引述《mgdesigner (魔法设计师)》之铭言: : : ~~~~~~~~~~~~~~~~~ : : 上面拆开来等於说: : : 1.产生一个新物件"xxx" : : 2.产生一参考 a,让a指向"xxx" : : ~~~~~~~~~~~ : : 这等於说: : : 1.产生一个新物件"bbb" : : 2.把a改指到"bbb" : : 但是"xxx"仍然存在喔,只是"xxx"目前没有被一个参考指到。 : : 你应该是说把"xxx"给清掉吧? : : a=null;a= "bbb";这样?记得gc()一下,不过应该是没差很多。 : 我有注意到我写的简单代换String 的程式 : 我是用Timer 让字串一直代换 : 过了几个月後竟然会吃超多记忆体... : 虽然是没有变慢怎样的 : 重新执行也很正常 : 但是就是觉得怪怪的 这边有一些我对於java garbage collection与memory manaement行为的猜测 首先是gc函式只是建议jvm对记忆体进行清理 而非强迫 要清理与否仍然取决於jvm 这边有个短文 http://www.oreilly.com.tw/column_sleepless.php?id=j005 一般而言jvm会在某段时间过後对於记忆体进行清理 但其清理的是程式在jvm中占用的记忆体量 而非jvm在OS下的记忆体占用量 可以看一下这边对於gc()函式的实验 http://www.devdaily.com/java/edu/pj/pj010008/pj010008.shtml 摘录最後实验结果 free memory before creating array: 4054912 free memory after creating array: 3852496 free memory after running gc(): 4064184 在实验开始之前,jvm可用记忆体为4054912 这边指的是jvm在OS当中的占用量 实验开始之後,jvm的记忆体配置为3852496 但重新释放之後却使得记忆体可用为4064184 这边会发现jvm多吃了OS一些空间 因此对jvm进行free这个动作,并不会减少其耗用OS的资源能力 因为jvm是自行控管记忆体配置的 当程式开始使用记忆体时, jvm会判断所需的记忆体实作两个演算法 一是分配记忆体给该程式 二是判断需不需要预先再跟OS索取记忆体以及需索取多少记忆体配置 我想这是为了避免jvm会因为程式无预警的记忆体索取而导致out of memory 因此会预先对此行为进行准备 这个行为受限於jvm自己在记忆体占用预设设定的最小值与最大值 也可以用java -Xmx 与 -Xms 两个指令来指定 不过java -Xmx这种指令是用来指定单一程式的记忆体占用量而非jvm本身罢了 而这两个指令的上限值则取决於你的os愿意提供多少可用的资源给程式 因此,当程式需要日积月累的常驻 并且重复的宣告需求,如: a=null \\设定为空并等待垃圾处理 a="ccc"\\宣告新的字串并指定给a 那麽jvm是有可能持续的向OS索取记忆体的 因此这是你看到的 为什麽占用记忆体越来越大的原因 所以我认为 若你想了解的是 程式对记忆体的占用 我觉得应该依照上述这个实验 去观察程式对jvm的占用而不是jvm对OS的占用 你才能确定你的写法是不是占用的主因 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.64.235.79
1F:推 jtmh:推! 01/24 04:18
2F:推 godfat:我倒觉得必然要观察 jvm, 毕竟实际上的 mem 是算在他头上 01/24 05:40
3F:推 godfat:例如如果碰到 jvm memory leak, 我们 app 当然要避开 01/24 05:43
我当然同意这点 不过jvm的运作机制底下 并不允许程式以任何方式直接处理OS下的记忆体管理 而只能处理jvm下的记忆体管理 如此一来 若想要试着从程式解决jvm记忆体配置的问题 就好像你想试着从app解决OS记忆体分割的问题一样 都会因为权限不足 以及 你并不了解这个黑盒子的运作方式而作罢 不过幸运的是 java virture machine的规格书是完全公开的 可以在这边查阅 http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html 我也希望能够从这边找出一些端倪 若是可以 我会再回答看看这个问题 ※ 编辑: garywine1201 来自: 61.64.235.79 (01/24 09:49)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP