MyException - 我的异常网
当前位置:我的异常网» 移动开发 » JVM鍨冨溇鍥炴敹鏈哄埗(涓?濡備綍鍥炴敹

JVM鍨冨溇鍥炴敹鏈哄埗(涓?濡備綍鍥炴敹

www.MyException.Cn  网友分享于:2018-03-16  浏览:0次
JVM鍨冨溇鍥炴敹鏈哄埗(涓?--濡備綍鍥炴敹

1.3 濡備綍鍥炴敹

瀵逛簬濡備綍鍥炴敹,杩欓噷灏辫璇村埌铏氭嫙鏈虹殑绠楁硶瀹炵幇浜?鎴戜滑甯歌鐨勭畻娉曟湁Mark-Sweep,Mark-Compact,Copying,Generational Garbage Collection.

1.3.1 Mark-Sweep,鏍囪-娓呴櫎绠楁硶,鎸夌収瀛楅潰杩囩▼,鍒嗕负鏍囪鍜屾竻闄や袱涓繃绋?

鏍囪杩囩▼灏辨槸鏍囪鍝簺瀵硅薄鏄湪鐢ㄧ殑,鍝簺鏄笉鍐嶈寮曠敤鍙互鍥炴敹鐨?(瑙丮arking)

娓呴櫎杩囩▼灏辨槸灏嗘爣璁拌繃鐨勫璞¤繘琛屽洖鏀?(瑙丯ormal Deletion)

缂虹偣:鈶燤ark-Sweep绠楁硶鏁堢巼涓嶉珮鈶ark-Sweep浼氫骇鐢熶笉杩炵画鐨勫唴瀛樼鐗?褰撳垎閰嶅ぇ瀵硅薄鐨勬椂鍊?鑻ユ棤娉曟壘鍒拌冻澶熷ぇ鐨勫唴瀛樼┖闂?涓嶅緱涓嶅啀杩涜涓€娆″瀮鍦惧洖鏀?

鐩存帴涓婂浘,绠€鍗曟槑浜?涓€鐩簡鐒?




聽1.3.2 Mark-Compact,鏍囪-鏁寸悊绱у噾绠楁硶(zzm鐨勪功涓婄炕璇戠殑鏄爣璁版暣鐞嗙畻娉?鍙兘涓嶆槸閭d箞鍑嗙‘,Compact鍘熸剰鏄娇绱у噾,鎴戠炕璇戞垚浜嗘暣鐞嗙揣鍑戞洿濂戒簺).

鏍囪-鏁寸悊绱у噾绠楁硶鐨勮繃绋?鏍囪璺?.3.1涓殑鏍囪杩囩▼涓€鏍?鏁寸悊绱у噾(Compact)鏄湪Sweep(娓呴櫎)鍚庤繘琛屼竴娆℃暣鐞嗙揣鍑戝鐞?灏辨槸灏嗗師鏉ヤ笉杩炵画鐨勫唴瀛樼鐗囨暣鐞嗘垚绱у噾鍨?

鐩存帴涓婂浘:


1.3.3 Generational Garbage Collection(鍒嗕唬鏀堕泦绠楁硶)

鍥犱负瑕侀潰瀵瑰叏浣撳璞?鍥犳,褰撳璞℃暟閲忓緢澶氭椂,鏍囪鍜屾暣鐞嗙揣鍑戠殑鏁堢巼骞朵笉楂?闅忕潃瓒婃潵瓒婂鐨勫璞¤鍒嗛厤锛屽璞″垪琛ㄧ殑澧為暱瀵艰嚧鏇撮暱鐨勫瀮鍦炬敹闆嗘椂闂?

鐒惰€?閫氳繃搴旂敤绋嬪簭鐨勫疄璇佸垎鏋愯〃鏄?澶у鏁板璞$殑瀛樻椿鏃堕棿鏄煭鏆傜殑.瑙佸浘


鏍规嵁瀵硅薄鍒嗛厤琛屼负,鎴戜滑鍙互灏嗗爢杩涜鏇村皬绮掑害鐨勫尯鍒?灏嗗爢鍒嗕负:鏂扮敓浠?Young Generation), 鑰佸勾浠?Old or Tenured Generation)鍜屾案涔呬唬( Permanent Generation).

鍙堝皢鏂扮敓浠e垎涓篍den鍖哄拰Survivor鐨凷0鍖哄拰S1鍖?榛樿鐨勫唴瀛樼┖闂存瘮渚嬩负Eden:S0=8:1,鎴戜滑涔熷彲浠ュ姩鎬佽缃瘮渚嬪ぇ灏?璁剧疆鏂规硶锛氬鍔犺櫄鎷熸満鍙傛暟,-XX:SurvivorRatio=8銆?/p>


1.3.3.1鏂扮敓浠e叿浣撳垎閰嶅強鍥炴敹杩囩▼濡備笅:



鈶犳柊瀵硅薄鍒嗛厤鐨勬椂鍊欓兘浼氳鍒嗛厤鍒癊den鍖?鑰屽垢瀛樺尯Survivor鐨勪袱閮ㄥ垎閮芥槸绌虹殑.姣忎釜鏂板垎閰嶇殑瀵硅薄閮芥湁涓€涓?瀵硅薄骞撮緞璁℃暟鍣?.


鈶″綋Eden鍖虹殑绌洪棿琚崰鐢ㄦ弧鍚?灏嗕細瑙﹀彂涓€娆inor garbage collection,绠€绉癿inor GC.

鈶㈠紩鐢ㄧ殑瀵硅薄(鍦ㄤ娇鐢ㄤ腑鐨?琚Щ鍔ㄥ埌绗竴鍧楀垢瀛樺尯(S0),瀛樻椿骞撮緞+1,涓嶅啀寮曠敤鐨勫璞″湪Eden鍖烘竻鐞?minor GC)鐨勬椂鍊欒娓呴櫎.


鈶e綋Eden鍖哄啀娆¤鍗犳弧鍚?杩涜minor GC,姝ゆGC浼氭妸Eden鍖哄拰S0鍖虹殑瀛樻椿瀵硅薄閮界Щ鍔ㄥ埌S1鍖?鑰孍den鍖哄拰S0鍖虹殑涓嶅啀琚紩鐢ㄧ殑瀵硅薄琚竻闄?琚Щ鍔ㄥ埌S1鍖虹殑瀵硅薄,瀵硅薄骞撮緞+1


鈶ゅ綋涓嬫Eden鍖哄啀娆¤鍗犳弧鍚?Eden鍖哄拰S1杩涜minor GC,灏嗗瓨娲诲璞$Щ鍒癝0鍖?瀵硅薄瀛樻椿骞撮緞+1.


鈶ュ綋瀵硅薄鐨勫瓨娲诲勾榫勮揪鍒伴粯璁?榛樿涓?5,鎴栭厤缃殑)鐨勫勾榫勯槇鍊兼椂,瀵硅薄灏嗚繘鍏ヨ€佸勾浠?Tenured Generation).铏氭嫙鏈哄弬鏁拌缃?-XX:MaxTenuringThreshold,瑙勫畾杩涘叆鑰佸勾浠g殑骞撮緞鍊煎ぇ灏?



杩欓噷瑕佹敞鎰?浠ヤ笂瑙勫垯鍙槸涓€鑸儏鍐?铏氭嫙鏈烘彁渚涗簡鍙﹀涓夌杩涘叆鑰佸勾浠g殑鏈哄埗(鍔ㄦ€佸勾榫勫垽瀹?澶у璞$洿鎺ヨ繘鍏ヨ€佸勾浠?鎷呬繚杩涘叆):

鈶犲姩鎬佸勾榫勫垽瀹氭垚鍔熷悗,杩涘叆鑰佸勾浠?杩欓噷zzm鐨勪功涓婅鐨勫緢鐗囬潰,骞朵笖瀹规槗璇鍒汉,鍥犳鍦ㄨ繖閲岄噸鏂伴槓杩?

JVM浼氬皢姣忎釜瀵硅薄鐨勫勾榫勪俊鎭€佸悇涓勾榫勬瀵硅薄鐨勬€诲ぇ灏忚褰曞湪"age table"琛ㄤ腑.鍩轰簬"age table",鏍规嵁survivor鍖哄ぇ灏?survivor鍖虹洰鏍囦娇鐢ㄧ巼(-XX:TargetSurvivorRatio,-XX:TargetSurvivorRatio=50,璁惧畾survivor鍖虹殑鐩爣浣跨敤鐜?榛樿50,鍗硈urvivor鍖哄璞$洰鏍囦娇鐢ㄧ巼涓?0%),鏈€澶ф檵鍗囧勾榫勯槇鍊?-XX:MaxTenuringThreshold),JVM浼氬姩鎬佺殑璁$畻tenuring threshold鐨勫€?涓€鏃﹀璞″勾榫勮揪鍒颁簡tenuring threshold灏变細鏅嬪崌鍒拌€佸勾浠?璁$畻鍏紡涓?size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);

婧愮爜浣嶇疆:https://github.com/FlashLightNing/openjdk-notes/blob/master/src/share/vm/gc_implementation/shared/ageTable.cpp

绗?1琛屽紑濮嬬殑uintageTable::compute_tenuring_threshold(size_t survivor_capacity)鏂规硶涓?/span>.



聽鍦ㄦ簮鐮佷腑鎴戜滑寰堝鏄撶煡閬撳姩鎬佸勾榫勫垽鏂殑鏍囧噯,褰撴煇涓猘ge骞撮緞娈电殑瀵硅薄澶у皬鍙婁互涓嬬殑骞撮緞娈垫墍鍗犳€籗urvivor(S0鍖烘垨鑰匰1鍖?姣斾緥杈惧埌Survivor鍖虹洰鏍囦娇鐢ㄧ巼,灏?/span>鎶婃age骞撮緞浣滀负鏂扮殑鏅嬪崌闃堝€?TenuringThreshold),鐒跺悗鍐嶄笌鏈€澶ф檵鍗囧勾榫勯槇鍊兼瘮杈?鑻?/span>age<MaxTenuringThreshold,鍒欐妸age浣滀负鏈€缁堢殑鏅嬪崌闃堝€?鑻ヤ笉鏄?鍒欎互MaxTenuringThreshold浣滀负鏈€缁堟檵鍗囬槇鍊?

鈶″璞″ぇ灏忚揪鍒拌瀹氬€艰繘鍏ヨ€佸勾浠?瑙勫畾鍦ㄥ璞¤揪鍒板澶уぇ灏忕殑鏃跺€?鐩存帴杩涘叆鑰佸勾浠?閫氳繃铏氭嫙鏈哄弬鏁拌缃繘鍏ヨ€佸勾浠g殑瀵硅薄澶у皬:-XX:PretenureSizeThreshold=[byte size],杩欓噷鐨勫崟浣嶆槸瀛楄妭,濡?12k,瑕佸啓鎴?12*1024=524288

鈶㈡媴淇濊繘鍏?褰撴柊鐢熶唬涓璞″湪缁忚繃n娆inor GC鍚?渚濈劧鏃犳硶婊¤冻瀵硅薄鐨勫瓨鍌ㄧ┖闂磋姹?閭d箞灏遍渶瑕侀€氳繃鎷呬繚鏈哄埗鐩存帴杩涘叆鑰佸勾浠?

鎷呬繚鏈哄埗杩囩▼:褰撹繘琛宮inor GC鍓?铏氭嫙鏈轰細妫€鏌ヨ€佸勾浠g殑绌洪棿鏄惁澶т簬鏂扮敓浠d腑鎵€鏈夊璞$┖闂?濡傛灉澶т簬,榛樿minor GC鏄畨鍏ㄧ殑,铏氭嫙鏈轰細鎶妋inor GC鍚嶴urvivor鍖烘棤娉曞绾崇殑瀵硅薄閫氳繃鎷呬繚鏈哄埗绉诲姩鍒拌€佸勾浠?

濡傛灉涓嶅ぇ浜?铏氭嫙鏈轰細妫€鏌ヨ缃殑铏氭嫙鏈哄弬鏁?XX:HandlePromotionFailure鐨勫€?鑻ヤ负false,鍒欒〃绀轰笉鍏佽鎷呬繚澶辫触,鑰佸勾浠d細杩涜涓€娆ajor GC(涔熷彨Full GC),娓呯悊鍑烘洿澶氱殑绌洪棿.鑻ヤ负true,

琛ㄧず鍏佽鎷呬繚澶辫触,閭d箞铏氭嫙鏈轰細鏍规嵁鍘嗘鏅嬪崌鍒拌€佸勾浠g殑瀵硅薄鎵€鍗犵┖闂寸殑骞冲潎鍊间綔涓虹粡楠屽€?涓庤€佸勾浠d腑鍓╀綑绌洪棿澶у皬姣旇緝,鍐冲畾鏄惁鍐嶈繘琛宮ajor GC.

聽1.3.3.2鑰佸勾浠e瀮鍦惧洖鏀?/p>

鑰佸勾浠?Tenured Generation)閲囩敤鏍囪-鏁寸悊绱у噾(Mark-Compact)绠楁硶瀹炵幇鍨冨溇鍥炴敹.

文章评论

什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
老程序员的下场
老程序员的下场
我是如何打败拖延症的
我是如何打败拖延症的
中美印日四国程序员比较
中美印日四国程序员比较
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员和编码员之间的区别
程序员和编码员之间的区别
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
编程语言是女人
编程语言是女人
代码女神横空出世
代码女神横空出世
一个程序员的时间管理
一个程序员的时间管理
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何成为一名黑客
如何成为一名黑客
每天工作4小时的程序员
每天工作4小时的程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员都该阅读的书
程序员都该阅读的书
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员的鄙视链
程序员的鄙视链
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java程序员必看电影
Java程序员必看电影
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
旅行,写作,编程
旅行,写作,编程
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
10个调试和排错的小建议
10个调试和排错的小建议
 程序员的样子
程序员的样子
程序员必看的十大电影
程序员必看的十大电影
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
我的丈夫是个程序员
我的丈夫是个程序员
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有