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燈, 水草

請輸入看板名稱,例如:iOS 或 站內搜尋

TOP