六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

對于垃圾回收的一些知識

[摘要]為什么要進行垃圾回收?因為JVM本身就實現內存堆里的,它不可能有象C++的自動變量(臨時變量),所以所有的對象都要被會收.我們先來看一下C++:ClassType varname;//自動變量,在內存的棧中創建,隨作用域的消失而自動消失. ClassType varname = new Class...
為什么要進行垃圾回收?
因為JVM本身就實現內存堆里的,它不可能有象C++的自動變量(臨時變量),所以所有的對象都要被會收.我們先來看一下C++:

ClassType varname;//自動變量,在內存的棧中創建,隨作用域的消失而自動消失.
ClassType varname = new ClassType();//在內存堆中創建,要程序員手工釋放,如:
delete varname;相當于C中的free


由于JVM本身就是在內存堆中實現,所以它不可能創建自動變量,所有的對象都有手工釋放,這個\\"手工"是指要程序實現,并不一定非要程序員編程,JVM自己就實現了"常規\\"對象的釋放,這就是JVM的垃圾回收器.

但對于非"常規\\"的對象比如直接或間接調用本地資源.(有人把圖象擦除認為不是本地方法調用,其實它只是AWT在間接調用本地方法而已),就是程序員自己編程來釋放資源.

一個對象是如何被標記垃圾(可回收對象)?以前有些實現采用"引用計數",就是一個對象在被引用的時候,引用計數加1,當引用句柄消失時引用計數減速1,當引用計數為0,就可被回收了.

那有人說剛new的對象不也被回收了嗎?

一個對象的生存期分為新生代,舊生代,新生代又分為Eden 和兩片生存空間其中保證有一片空間在任何時間是空的,對象剛被new的時候在Eden 中,垃圾回收器不會對Eden中對象回收,只有Eden中對象滿的時候,被復制到下一片生存空間.當生存空間滿的時候,才會發生一次小回收.當對象在生存空間太久達到一個\\"老化"的值時就被復制到了舊生代,舊生代滿的時候就發生大回收了.

但java并不是采用引用計數來標記一個對象是否可以回收的.因為JAVA中對象很可能被直接或間接循環引用,就是對象A中引用到對象B的一個屬性,而對象B又引用了A中一個屬性,這樣可能造成引用記數永遠不會為0.

JAVA中是采用"由根遍歷\\"來標記對象,就是從句柄開始對一個句柄引用的對象進行查找,然后對這個對象引用的對象再進行查找,這樣遞歸好象從樹根往沿枝條找到葉子,如果一個對象沒有被這樣查找到說明它已經沒有對象對它引用了.

如何釋放非JAVA對象?我們已經說過常規的JAVA對象會被JVM的垃圾回收器來回收,但對于本地資源(一般來說本地方法大都調用了本地資源),就要我們手工釋放了.


一般來說我們可以在finalize() 中定義釋放本地資源的代碼,但是這個方法不是肯定會被執行的,finalize() 不是在對象退出的時候運行,而是在對象被作為垃圾回收時才調用.有可能JVM一直不需要回收,所以這個方法就一直不會被調用,同樣如果要求對象在退出前一定要稍許對象,你一定要把釋放對象的代碼寫在try{}finally{}的finally塊中,這就是我再三強調釋放數據數連結一定要寫在這兒的原因,在java1.1中還有個方法是System.runFinalizersOnExit(),但它不如finally來得更有效.

同樣System.gc()方法并不能保證垃圾回收的發生,它只是"建議\\",而垃圾回到到底什么時候發生?小回收是生存空間滿,大回收是舊生代滿,這只是前提.因為垃圾回收是低優先級的方式運行,只有當其他線程都掛起等待內存釋放的情況出現時,它才開始釋放對象的內存.




主站蜘蛛池模板: 日本xxx在线观看免费播放 | 日韩一区国产一级 | 永久免费观看午夜视频在线 | 一级人做人a爰免费视频 | 中文字幕国产精品 | 色爱区综合小说 | 五月婷婷丁香综合网 | 深夜久久 | 四虎影院紧急入口 | 日本福利网址 | 四虎最新视频 | 日韩精品一区在线观看 | 亚洲第五页 | 欧美视频二区 | 日韩欧美国产综合 | 亚洲第一色视频 | 色综合久久天天综合绕观看 | 亚洲淫片 | 欧美综合图片区 | 中文字幕国产 | 青娱乐在线视频盛宴 | 午夜天堂| 天天翘夜夜洗澡天天做 | 日本三级在线播放线观看2021 | 青娱乐国产在线观看 | 日韩美女一级片 | 欧美在线中文字幕高清的 | 三级大黄| 日韩美女网站 | 青草影院在线观看 | 在线观看国产一区二三区 | 亚洲v在线 | 视频在线91 | 搜索一级黄色片 | 中文国产日韩欧美视频 | 欧美无人区码卡二卡3卡4免费 | 亚洲影视天堂 | 日日夜夜综合 | 天天干夜夜做 | 天天舔天天 | 欧美香蕉视频在线观看 |