銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?---JVM甯歌闂鎬荤粨

鏂囩珷鏉ユ簮锛?a href="http://www.cnblogs.com/smyhvae/p/4810168.html">http://www.cnblogs.com/smyhvae/p/4810168.html

銆愭鏂囥€?/p>

澹版槑锛氭湰鏂囧彧鏄仛涓€涓€荤粨锛屾湁鍏砵vm鐨勮缁嗙煡璇嗗彲浠ュ弬鑰冩湰浜轰箣鍓嶇殑绯诲垪鏂囩珷锛屽挨鍏舵槸閭g瘒锛?a target="_blank" href="http://www.cnblogs.com/smyhvae/p/4744233.html">Java铏氭嫙鏈鸿瑙?4----GC绠楁硶鍜岀绫?/a>銆傞偅绡囨枃绔犲拰鏈枃鏄潰璇曟椂鐨勯噸鐐广€?/p>

闈㈣瘯蹇呴棶鍏抽敭璇嶏細JVM鍨冨溇鍥炴敹銆佺被鍔犺浇鏈哄埗銆?/p>

鍏堟妸鏈枃鐨勭洰褰曠敾涓€涓€濈淮瀵煎浘锛氾紙鍥剧殑婧愭枃浠跺湪鏈枃鏈熬锛?/p>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涓€銆丣ava寮曠敤鐨勫洓绉嶇姸鎬侊細

java涓紩鐢ㄧ殑瀹氫箟锛氬鏋渞eference绫诲瀷鐨勬暟鎹腑瀛樺偍鐨勬暟鍊间唬琛ㄧ殑鏄彟澶栦竴鍧楀唴瀛樼殑璧峰鍦板潃锛屽氨鎴愯繖鍧楀唴瀛樹唬琛ㄧ潃涓€涓紩鐢ㄣ€?/strong>

寮哄紩鐢細

銆€銆€鐢ㄧ殑鏈€骞裤€傛垜浠钩鏃跺啓浠g爜鏃讹紝new涓€涓狾bject瀛樻斁鍦ㄥ爢鍐呭瓨锛岀劧鍚庣敤涓€涓紩鐢ㄦ寚鍚戝畠锛岃繖灏辨槸寮哄紩鐢ㄣ€?/p>

銆€銆€濡傛灉涓€涓璞″叿鏈夊己寮曠敤锛岄偅鍨冨溇鍥炴敹鍣ㄧ粷涓嶄細鍥炴敹瀹?/strong>銆傚綋鍐呭瓨绌洪棿涓嶈冻锛孞ava铏氭嫙鏈哄畞鎰挎姏鍑篛utOfMemoryError閿欒锛屼娇绋嬪簭寮傚父缁堟锛屼篃涓嶄細闈犻殢鎰忓洖鏀跺叿鏈夊己寮曠敤鐨勫璞℃潵瑙e喅鍐呭瓨涓嶈冻鐨勯棶棰樸€?/p>

杞紩鐢細

銆€銆€濡傛灉涓€涓璞″彧鍏锋湁杞紩鐢紝鍒欏唴瀛樼┖闂磋冻澶熸椂锛屽瀮鍦惧洖鏀跺櫒灏变笉浼氬洖鏀跺畠锛涘鏋?span style="color: #0000ff;">鍐呭瓨绌洪棿涓嶈冻浜嗭紝灏变細鍥炴敹杩欎簺瀵硅薄鐨勫唴瀛?/strong>銆傦紙澶囨敞锛氬鏋滃唴瀛樹笉瓒筹紝闅忔椂鏈夊彲鑳借鍥炴敹銆傦級

銆€銆€鍙鍨冨溇鍥炴敹鍣ㄦ病鏈夊洖鏀跺畠锛岃瀵硅薄灏卞彲浠ヨ绋嬪簭浣跨敤銆傝蒋寮曠敤鍙敤鏉ュ疄鐜板唴瀛樻晱鎰熺殑楂橀€熺紦瀛樸€?/p>

鎻愪緵SoftReference绫绘潵瀹炵幇杞紩鐢ㄣ€?/p>

寮卞紩鐢細

銆€銆€寮卞紩鐢ㄤ笌杞紩鐢ㄧ殑鍖哄埆鍦ㄤ簬锛?span style="color: #0000ff;">鍙叿鏈夊急寮曠敤鐨勫璞℃嫢鏈夋洿鐭殏鐨勭敓鍛藉懆鏈?/strong>銆?/p>

銆€銆€姣忔鎵цGC鐨勬椂鍊?/span>锛屼竴鏃﹀彂鐜颁簡鍙叿鏈夊急寮曠敤鐨勫璞★紝涓嶇褰撳墠鍐呭瓨绌洪棿瓒冲涓庡惁锛岄兘浼氬洖鏀跺畠鐨勫唴瀛?/strong>銆備笉杩囷紝鐢变簬鍨冨溇鍥炴敹鍣ㄦ槸涓€涓紭鍏堢骇寰堜綆鐨勭嚎绋嬶紝鍥犳涓嶄竴瀹氫細寰堝揩鍙戠幇閭d簺鍙叿鏈夊急寮曠敤鐨勫璞?/strong>銆?/p>

琚急寮曠敤鍏宠仈鐨勫璞″彧鑳界敓瀛樺埌涓嬩竴娆″瀮鍦炬敹闆嗗彂鐢熶箣鍓嶃€?/p>

鎻愪緵WeakReference绫绘潵瀹炵幇寮卞紩鐢ㄣ€?/p>

铏氬紩鐢細

銆€銆€鈥滆櫄寮曠敤鈥濋【鍚嶆€濅箟锛屽氨鏄舰鍚岃櫄璁撅紝涓庡叾浠栧嚑绉嶅紩鐢ㄩ兘涓嶅悓锛?span style="color: #0000ff;">铏氬紩鐢ㄥ苟涓嶄細鍐冲畾瀵硅薄鐨勭敓鍛藉懆鏈?/strong>銆傚鏋滀竴涓璞′粎鎸佹湁铏氬紩鐢紝閭d箞瀹冨氨鍜屾病鏈変换浣曞紩鐢ㄤ竴鏍凤紝鍦ㄤ换浣曟椂鍊欓兘鍙兘琚瀮鍦惧洖鏀跺櫒鍥炴敹銆?/p>

銆€銆€铏氬紩鐢ㄤ富瑕佺敤鏉ヨ窡韪璞¤鍨冨溇鍥炴敹鍣ㄥ洖鏀剁殑娲诲姩銆?/p>

涓轰竴涓璞¤缃櫄寮曠敤鍏宠仈鐨勫敮涓€鐩殑灏辨槸鑳藉湪杩欎釜瀵硅薄琚敹闆嗗櫒鍥炴敹鏃跺彈鍒颁竴涓郴缁熼€氱煡銆?/p>

鎻愪緵PhantomRefence绫绘潵瀹炵幇铏氬紩鐢ㄣ€?/p>

娉細鍏充簬鍚勭寮曠敤鐨勮瑙o紝鍙互鍙傝€冭繖绡囧崥瀹細

http://zhangjunhd.blog.51cto.com/113473/53092

浜屻€丣ava涓殑鍐呭瓨鍒掑垎锛?/strong>

Java绋嬪簭鍦ㄨ繍琛屾椂锛岄渶瑕佸湪鍐呭瓨涓殑鍒嗛厤绌洪棿銆?span style="color: #0000ff;">涓轰簡鎻愰珮杩愮畻鏁堢巼锛屽氨瀵规暟鎹繘琛屼簡涓嶅悓绌洪棿鐨勫垝鍒?/strong>锛屽洜涓烘瘡涓€鐗囧尯鍩熼兘鏈夌壒瀹氱殑澶勭悊鏁版嵁鏂瑰紡鍜屽唴瀛樼鐞嗘柟寮忋€?/p>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涓婇潰杩欏紶鍥惧氨鏄痡vm杩愯鏃剁殑鐘舵€併€傚叿浣撳垝鍒嗕负濡備笅5涓唴瀛樼┖闂达細锛堥潪甯搁噸瑕侊級

  • 绋嬪簭璁℃暟鍣細淇濊瘉绾跨▼鍒囨崲鍚庤兘鎭㈠鍒板師鏉ョ殑鎵ц浣嶇疆
  • 铏氭嫙鏈烘爤锛氾紙鏍堝唴瀛?/span>锛変负铏氭嫙鏈烘墽琛?span style="color: #0000ff;">java鏂规硶鏈嶅姟锛氭柟娉曡璋冪敤鏃跺垱寤烘爤甯?->灞€閮ㄥ彉閲忚〃->灞€閮ㄥ彉閲忋€佸璞″紩鐢?/li>
  • 鏈湴鏂规硶鏍堬細涓鸿櫄鎷熸満鎵т娇鐢ㄥ埌鐨?span style="color: #0000ff;">Native鏂规硶鏈嶅姟
  • 鍫嗗唴瀛?/span>锛?/strong>瀛樻斁鎵€鏈塶ew鍑烘潵鐨勪笢瑗?/strong>
  • 鏂规硶鍖?/span>锛?/strong>瀛樺偍琚櫄鎷熸満鍔犺浇鐨?span style="color: #0000ff;">绫讳俊鎭€佸父閲忋€侀潤鎬佸父閲忋€侀潤鎬佹柟娉?/strong>绛夈€?/li>
  • 杩愯鏃跺父閲忔睜锛堟柟娉曞尯鐨勪竴閮ㄥ垎锛?/li>

GC瀵瑰畠浠殑鍥炴敹锛?/strong>

鍐呭瓨鍖哄煙涓殑绋嬪簭璁℃暟鍣?/span>銆?span style="color: #0000ff;">铏氭嫙鏈烘爤銆佹湰鍦版柟娉曟爤杩?涓尯鍩?span style="color: #0000ff;">闅忕潃绾跨▼鑰岀敓锛岀嚎绋嬭€岀伃锛?strong>鏍堜腑鐨勬爤甯?/strong>闅忕潃鏂规硶鐨勮繘鍏ュ拰閫€鍑鸿€屾湁鏉′笉绱婂湴鎵ц鐫€鍑烘爤鍜屽叆鏍堢殑鎿嶄綔锛屾瘡涓爤甯т腑鍒嗛厤澶氬皯鍐呭瓨鍩烘湰鏄湪绫荤粨鏋勭‘瀹氫笅鏉ユ椂灏卞凡鐭ョ殑銆傚湪杩欏嚑涓尯鍩熶笉闇€瑕佽繃澶氳€冭檻鍥炴敹鐨勯棶棰橈紝鍥犱负鏂规硶缁撴潫鎴栬€呯嚎绋嬬粨鏉熸椂锛屽唴瀛樿嚜鐒跺氨璺熺潃鍥炴敹浜嗐€?strong>

GC鍥炴敹鐨勪富瑕佸璞?/strong>锛氳€?span style="color: #0000ff;">Java鍫嗗拰鏂规硶鍖?/strong>鍒欎笉鍚岋紝涓€涓帴鍙d腑鐨勫涓疄鐜扮被闇€瑕佺殑鍐呭瓨鍙兘涓嶅悓锛屼竴涓柟娉曚腑鐨勫涓垎鏀渶瑕佺殑鍐呭瓨涔熷彲鑳戒笉涓€鏍凤紝鎴戜滑鍙湁鍦ㄧ▼搴忓浜庤繍琛屾湡闂存椂鎵嶈兘鐭ラ亾浼氬垱寤哄摢浜涘璞★紝杩欓儴鍒嗗唴瀛樼殑鍒嗛厤鍜屽洖鏀堕兘鏄姩鎬佺殑锛孏C鍏虫敞鐨勪篃鏄繖閮ㄥ垎鍐呭瓨锛屽悗闈㈢殑鏂囩珷涓鏋滄秹鍙婂埌鈥滃唴瀛樷€濆垎閰嶄笌鍥炴敹涔熶粎鎸囩潃涓€閮ㄥ垎鍐呭瓨銆?strong>

1銆佺▼搴忚鏁板櫒锛氾紙绾跨▼绉佹湁锛?/strong>

姣忎釜绾跨▼鎷ユ湁涓€涓▼搴忚鏁板櫒锛屽湪绾跨▼鍒涘缓鏃跺垱寤猴紝

鎸囧悜涓嬩竴鏉℃寚浠ょ殑鍦板潃

鎵ц鏈湴鏂规硶鏃讹紝鍏跺€间负undefined

璇寸殑閫氫織涓€鐐癸紝鎴戜滑鐭ラ亾锛孞ava鏄敮鎸佸绾跨▼鐨勶紝绋嬪簭鍏堝幓鎵цA绾跨▼锛屾墽琛屽埌涓€鍗婏紝鐒跺悗灏卞幓鎵цB绾跨▼锛岀劧鍚庡張璺戝洖鏉ユ帴鐫€鎵цA绾跨▼锛岄偅绋嬪簭鏄€庝箞璁颁綇A绾跨▼宸茬粡鎵ц鍒板摢閲屼簡鍛紵杩欏氨闇€瑕佺▼搴忚鏁板櫒浜嗐€傚洜姝?strong>锛?span style="color: #0000ff;">涓轰簡绾跨▼鍒囨崲鍚庤兘澶熸仮澶嶅埌姝g‘鐨勬墽琛屼綅缃紝姣忔潯绾跨▼閮芥湁涓€涓嫭绔嬬殑绋嬪簭璁℃暟鍣?/span>

锛岃繖鍧楀効灞炰簬鈥滅嚎绋嬬鏈夆€濈殑鍐呭瓨銆?/p>

2銆丣ava铏氭嫙鏈烘爤锛氾紙绾跨▼绉佹湁锛?/strong>

姣忎釜鏂规硶琚皟鐢?/strong>鐨勬椂鍊欓兘浼氬垱寤轰竴涓?span style="color: #0000ff;">鏍堝抚锛岀敤浜庡瓨鍌ㄥ眬閮ㄥ彉閲忚〃銆佹搷浣滄爤銆佸姩鎬侀摼鎺ャ€佹柟娉曞嚭鍙g瓑淇℃伅銆傚眬閮ㄥ彉閲忚〃瀛樻斁鐨勬槸锛氱紪璇戞湡鍙煡鐨勫熀鏈暟鎹被鍨嬨€佸璞″紩鐢ㄧ被鍨嬨€?/p>

聽聽聽 姣忎釜鏂规硶琚皟鐢ㄧ洿鍒版墽琛屽畬鎴愮殑杩囩▼锛屽氨瀵瑰簲鐫€涓€涓爤甯у湪铏氭嫙鏈轰腑浠庡叆鏍堝埌鍑烘爤鐨勮繃绋嬨€?/p>

鍦↗ava铏氭嫙鏈鸿鑼冧腑锛屽杩欎釜鍖哄煙瑙勫畾浜嗕袱绉嶅紓甯告儏鍐碉細

銆€銆€锛?锛夊鏋滅嚎绋嬭姹傜殑鏍堟繁搴﹀お娣憋紝瓒呭嚭浜嗚櫄鎷熸満鎵€鍏佽鐨勬繁搴︼紝灏变細鍑虹幇StackOverFlowError锛堟瘮濡傛棤闄愰€掑綊銆傚洜涓烘瘡涓€灞傛爤甯ч兘鍗犵敤涓€瀹氱┖闂达紝鑰?Xss 瑙勫畾浜嗘爤鐨勬渶澶х┖闂达紝瓒呭嚭杩欎釜鍊煎氨浼氭姤閿欙級

銆€銆€锛?锛夎櫄鎷熸満鏍堝彲浠ュ姩鎬佹墿灞曪紝濡傛灉鎵╁睍鍒版棤娉曠敵璇疯冻澶熺殑鍐呭瓨绌洪棿锛屼細鍑虹幇OOM

3銆佹湰鍦版柟娉曟爤锛?/strong>

锛?锛夋湰鍦版柟娉曟爤涓巎ava铏氭嫙鏈烘爤浣滅敤闈炲父绫讳技锛屽叾鍖哄埆鏄細java铏氭嫙鏈烘爤鏄负铏氭嫙鏈烘墽琛宩ava鏂规硶鏈嶅姟鐨勶紝鑰屾湰鍦版柟娉曟爤鍒欎负铏氭嫙鏈烘墽浣跨敤鍒扮殑Native鏂规硶鏈嶅姟銆?/p>

锛?锛塉ava铏氭嫙鏈烘病鏈夊鏈湴鏂规硶鏍堢殑浣跨敤鍜屾暟鎹粨鏋勫仛寮哄埗瑙勫畾锛孲un HotSpot铏氭嫙鏈哄氨鎶妀ava铏氭嫙鏈烘爤鍜屾湰鍦版柟娉曟爤鍚堜簩涓轰竴銆?/p>

锛?锛夋湰鍦版柟娉曟爤涔熶細鎶涘嚭StackOverFlowError鍜孫utOfMemoryError銆?/p>

4銆丣ava鍫嗭細鍗冲爢鍐呭瓨锛堢嚎绋嬪叡浜級

锛?锛夊爢鏄痡ava铏氭嫙鏈烘墍绠$悊鐨勫唴瀛樺尯鍩熶腑鏈€澶х殑涓€鍧楋紝java鍫嗘槸琚墍鏈夌嚎绋嬪叡浜殑鍐呭瓨鍖哄煙锛屽湪java铏氭嫙鏈哄惎鍔ㄦ椂鍒涘缓锛屽爢鍐呭瓨鐨勫敮涓€鐩殑灏辨槸瀛樻斁瀵硅薄瀹炰緥鍑犱箮鎵€鏈夌殑瀵硅薄瀹炰緥閮藉湪鍫嗗唴瀛樺垎閰嶃€?/p>

锛?锛?span style="color: #0000ff;">鍫嗘槸GC绠$悊鐨勪富瑕佸尯鍩?/strong>锛屼粠鍨冨溇鍥炴敹鐨勮搴︾湅锛岀敱浜庣幇鍦ㄧ殑鍨冨溇鏀堕泦鍣ㄩ兘鏄噰鐢ㄧ殑鍒嗕唬鏀堕泦绠楁硶锛屽洜姝ava鍫嗚繕鍙互鍒濇缁嗗垎涓?span style="color: #0000ff;">鏂扮敓浠e拰鑰佸勾浠?/strong>銆?/p>

锛?锛塉ava铏氭嫙鏈鸿瀹氾紝鍫嗗彲浠ュ浜庣墿鐞嗕笂涓嶈繛缁殑鍐呭瓨绌洪棿涓紝鍙閫昏緫涓婅繛缁殑鍗冲彲銆傚湪瀹炵幇涓婃棦鍙互鏄浐瀹氱殑锛屼篃鍙互鏄彲鍔ㄦ€佹墿灞曠殑銆傚鏋滃湪鍫嗗唴瀛樻病鏈夊畬鎴愬疄渚嬪垎閰嶏紝骞朵笖鍫嗗ぇ灏忎篃鏃犳硶鎵╁睍锛屽氨浼氭姏鍑篛utOfMemoryError寮傚父銆?/p>

5銆佹柟娉曞尯锛氾紙绾跨▼鍏变韩锛?/strong>

锛?锛夌敤浜庡瓨鍌ㄥ凡琚櫄鎷熸満鍔犺浇鐨勭被淇℃伅銆佸父閲忋€侀潤鎬佸彉閲忋€佸嵆鏃剁紪璇戝櫒缂栬瘧鍚庣殑浠g爜绛夋暟鎹€?/p>

锛?锛塖un HotSpot铏氭嫙鏈烘妸鏂规硶鍖哄彨鍋氭案涔呬唬锛圥ermanent Generation锛夛紝鏂规硶鍖轰腑鏈€閲嶈鐨勯儴鍒嗘槸杩愯鏃跺父閲忔睜銆傛案涔呬唬鐨勫瀮鍦炬敹闆嗗洖鏀朵袱閮ㄥ垎鍐呭锛氬簾寮冨父閲忓拰鏃犵敤鐨勭被銆?/p>

6銆佽繍琛屾椂甯搁噺姹狅細

锛?锛夎繍琛屾椂甯搁噺姹犳槸鏂规硶鍖虹殑涓€閮ㄥ垎锛岃嚜鐒跺彈鍒版柟娉曞尯鍐呭瓨鐨勯檺鍒讹紝褰撳父閲忔睜鏃犳硶鍐嶇敵璇峰埌鍐呭瓨鏃跺氨浼氭姏鍑篛utOfMemoryError寮傚父銆偮?/p>

娉細鍏充簬鏈鐨勮缁嗗唴瀹癸紝鍙互鍙傝€冩湰浜虹殑鍙﹀涓€绡囧崥瀹細Java铏氭嫙鏈鸿瑙?2----JVM鍐呭瓨缁撴瀯

涓夈€丣ava瀵硅薄鍦ㄥ唴瀛樹腑鐨勭姸鎬侊細

鍙揪鐨?鍙Е鍙婄殑锛?/strong>

銆€銆€Java瀵硅薄琚垱寤哄悗锛屽鏋滆涓€涓垨澶氫釜鍙橀噺寮曠敤锛岄偅灏辨槸鍙揪鐨勩€傚嵆浠庢牴鑺傜偣鍙互瑙﹀強鍒拌繖涓璞°€?/p>

銆€銆€鍏跺疄灏辨槸浠庢牴鑺傜偣鎵弿锛屽彧瑕佽繖涓璞″湪寮曠敤閾句腑锛岄偅灏辨槸鍙Е鍙婄殑銆?/p>

鍙仮澶嶇殑锛?/strong>

銆€銆€Java瀵硅薄涓嶅啀琚换浣曞彉閲忓紩鐢ㄥ氨杩涘叆浜嗗彲鎭㈠鐘舵€併€?/p>

銆€銆€鍦ㄥ洖鏀惰瀵硅薄涔嬪墠锛岃瀵硅薄鐨刦inalize()鏂规硶杩涜璧勬簮娓呯悊銆傚鏋?strong>鍦╢inalize()鏂规硶涓噸鏂拌鍙橀噺寮曠敤璇ュ璞★紝鍒欒瀵硅薄鍐嶆鍙樹负鍙揪鐘舵€?/strong>锛屽惁鍒欒瀵硅薄杩涘叆涓嶅彲杈剧姸鎬?/p>

浠讳綍涓€涓璞$殑finalize()鏂规硶閮藉彧浼氳绯荤粺鑷姩璋冪敤涓€娆?/p>

涓嶅彲杈剧殑锛?/strong>

銆€銆€Java瀵硅薄涓嶈浠讳綍鍙橀噺寮曠敤锛屼笖绯荤粺鍦ㄨ皟鐢ㄥ璞$殑finalize()鏂规硶鍚庝緷鐒舵病鏈変娇璇ュ璞″彉鎴愬彲杈剧姸鎬侊紙璇ュ璞′緷鐒舵病鏈夎鍙橀噺寮曠敤锛夛紝閭d箞璇ュ璞″皢鍙樻垚涓嶅彲杈剧姸鎬併€?/p>

銆€銆€褰揓ava瀵硅薄澶勪簬涓嶅彲杈剧姸鎬佹椂锛岀郴缁熸墠浼氱湡姝e洖鏀惰瀵硅薄鎵€鍗犳湁鐨勮祫婧愩€?/p>

鍥涖€佸垽鏂璞℃浜$殑涓ょ甯哥敤绠楁硶锛?/strong>

聽聽聽 褰撳璞′笉琚紩鐢ㄧ殑鏃跺€欙紝杩欎釜瀵硅薄灏辨槸姝讳骸鐨勶紝绛夊緟GC杩涜鍥炴敹銆?/p>

1銆?/strong>寮曠敤璁℃暟绠楁硶锛?/strong>

姒傚康锛?/strong>

銆€銆€缁欏璞′腑娣诲姞涓€涓紩鐢ㄨ鏁板櫒锛屾瘡褰撴湁涓€涓湴鏂瑰紩鐢ㄥ畠鏃讹紝璁℃暟鍣ㄥ€煎氨鍔?锛涘綋寮曠敤澶辨晥鏃讹紝璁℃暟鍣ㄥ€煎氨鍑?锛涗换浣曟椂鍒昏鏁板櫒涓?鐨勫璞″氨鏄笉鍙兘鍐嶈浣跨敤鐨勩€?strong>

浣嗘槸锛?/strong>

銆€銆€涓绘祦鐨刯ava铏氭嫙鏈哄苟娌℃湁閫夌敤寮曠敤璁℃暟绠楁硶鏉ョ鐞嗗唴瀛橈紝鍏朵腑鏈€涓昏鐨勫師鍥犳槸锛?span style="color: #0000ff;">瀹冨緢闅捐В鍐冲璞′箣闂寸浉浜掑惊鐜紩鐢ㄧ殑闂銆?/p>

浼樼偣锛?/strong>

銆€銆€绠楁硶鐨勫疄鐜扮畝鍗曪紝鍒ゅ畾鏁堢巼涔熼珮锛屽ぇ閮ㄥ垎鎯呭喌涓嬫槸涓€涓笉閿欑殑绠楁硶銆傚緢澶氬湴鏂瑰簲鐢ㄥ埌瀹?/p>

缂虹偣锛?/strong>

寮曠敤鍜屽幓寮曠敤浼撮殢鍔犳硶鍜屽噺娉曪紝褰卞搷鎬ц兘

鑷村懡鐨勭己闄凤細瀵逛簬寰幆寮曠敤鐨勫璞?/strong>鏃犳硶杩涜鍥炴敹

2銆?span style="color: #0000ff;">鏍规悳绱㈢畻娉?/span>锛?/strong>锛坖vm閲囩敤鐨勭畻娉曪紝涔熷彨鍙揪鎬у垎鏋愮畻娉曪級

姒傚康锛?/strong>

銆€銆€璁剧珛鑻ュ共绉嶆牴瀵硅薄锛屽綋浠讳綍涓€涓牴瀵硅薄锛圙C Root锛夊埌鏌愪竴涓璞″潎涓嶅彲杈炬椂锛屽垯璁や负杩欎釜瀵硅薄鏄彲浠ヨ鍥炴敹鐨?/span>銆?/p>

娉細杩欓噷鎻愬埌锛岃绔嬭嫢骞茬鏍瑰璞★紝褰撲换浣曚竴涓牴瀵硅薄鍒版煇涓€涓璞″潎涓嶅彲杈炬椂锛屽垯璁や负杩欎釜瀵硅薄鏄彲浠ヨ鍥炴敹鐨勩€傛垜浠湪鍚庨潰浠嬬粛鏍囪-娓呯悊绠楁硶/鏍囪鏁寸悊绠楁硶鏃讹紝涔熶細涓€鐩村己璋冧粠鏍硅妭鐐瑰紑濮嬶紝瀵规墍鏈夊彲杈惧璞″仛涓€娆℃爣璁帮紝閭d粈涔堝彨鍋氬彲杈惧憿锛?/p>

鍙揪鎬у垎鏋愶細

銆€銆€浠庢牴锛圙C Roots锛夌殑瀵硅薄浣滀负璧峰鐐癸紝寮€濮嬪悜涓嬫悳绱紝鎼滅储鎵€璧拌繃鐨勮矾寰勭О涓衡€?span style="color: #0000ff;">寮曠敤閾?/strong>

鈥濓紝褰撲竴涓璞″埌GC Roots娌℃湁浠讳綍寮曠敤閾剧浉杩烇紙鐢ㄥ浘璁虹殑姒傚康鏉ヨ锛屽氨鏄粠GC Roots鍒拌繖涓璞′笉鍙揪锛夋椂锛屽垯璇佹槑姝ゅ璞℃槸涓嶅彲鐢ㄧ殑銆?/p>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

濡備笂鍥炬墍绀猴紝ObjectD鍜孫bjectE鏄簰鐩稿叧鑱旂殑锛屼絾鏄敱浜嶨C roots鍒拌繖涓や釜瀵硅薄涓嶅彲杈撅紝鎵€浠ユ渶缁圖鍜孍杩樻槸浼氳褰撳仛GC鐨勫璞★紝涓婂浘鑻ユ槸閲囩敤寮曠敤璁℃暟娉曪紝鍒橝-E浜斾釜瀵硅薄閮戒笉浼氳鍥炴敹銆?/p>

鏍癸紙GC Roots锛夛細

璇村埌GC roots锛圙C鏍癸級锛屽湪JAVA璇█涓紝鍙互褰撳仛GC roots鐨勫璞℃湁浠ヤ笅鍑犵锛?/p>

1銆?span style="color: #0000ff;">鏍?/strong>锛堟爤甯т腑鐨勬湰鍦板彉閲忚〃锛?span style="color: #0000ff;">涓紩鐢ㄧ殑瀵硅薄銆?/p>

2銆佹柟娉曞尯涓殑闈欐€佹垚鍛樸€?/p>

3銆佹柟娉曞尯涓殑甯搁噺寮曠敤鐨勫璞★紙鍏ㄥ眬鍙橀噺锛?/p>

4銆佹湰鍦版柟娉曟爤涓璊NI锛堜竴鑸鐨凬ative鏂规硶锛夊紩鐢ㄧ殑瀵硅薄銆?/p>

娉細绗竴鍜岀鍥涚閮芥槸鎸囩殑鏂规硶鐨勬湰鍦板彉閲忚〃锛岀浜岀琛ㄨ揪鐨勬剰鎬濇瘮杈冩竻鏅帮紝绗笁绉嶄富瑕佹寚鐨勬槸澹版槑涓篺inal鐨勫父閲忓€笺€?/p>

鍦ㄦ牴鎼滅储绠楁硶鐨勫熀纭€涓婏紝鐜颁唬铏氭嫙鏈虹殑瀹炵幇褰撲腑锛?span style="color: #0000ff;">鍨冨溇鎼滈泦鐨勭畻娉?/strong>涓昏鏈変笁绉嶏紝鍒嗗埆鏄?span style="color: #0000ff;">鏍囪-娓呴櫎绠楁硶銆?strong>澶嶅埗绠楁硶銆?strong>鏍囪-鏁寸悊绠楁硶

銆傝繖涓夌绠楁硶閮芥墿鍏呬簡鏍规悳绱㈢畻娉曪紝涓嶈繃瀹冧滑鐞嗚В璧锋潵杩樻槸闈炲父濂界悊瑙g殑銆?/p>

浜斻€佸瀮鍦惧洖鏀剁畻娉曪細

1銆佹爣璁?娓呴櫎绠楁硶锛?/strong>

姒傚康锛?/strong>

鏍囪闃舵锛?span style="color: #0000ff;">鍏堥€氳繃鏍硅妭鐐癸紝鏍囪鎵€鏈変粠鏍硅妭鐐瑰紑濮嬬殑鍙揪瀵硅薄銆傚洜姝わ紝鏈鏍囪鐨勫璞″氨鏄湭琚紩鐢ㄧ殑鍨冨溇瀵硅薄锛?/p>

娓呴櫎闃舵锛氭竻闄ゆ墍鏈夋湭琚爣璁扮殑瀵硅薄銆?/p>

缂虹偣锛?/strong>

鏍囪鍜屾竻闄ょ殑杩囩▼鏁堢巼涓嶉珮锛堟爣璁板拰娓呴櫎閮介渶瑕佷粠澶撮亶鍘嗗埌灏撅級

鏍囪娓呴櫎鍚?span style="color: #0000ff;">浼氫骇鐢熷ぇ閲忎笉杩炵画鐨勭鐗?/strong>銆?/p>

2銆佸鍒剁畻娉曪細锛堟柊鐢熶唬鐨凣C锛?/strong>

姒傚康锛?/p>

銆€銆€灏嗗師鏈夌殑鍐呭瓨绌洪棿鍒嗕负涓ゅ潡锛屾瘡娆″彧浣跨敤鍏朵腑涓€鍧楋紝鍦ㄥ瀮鍦惧洖鏀舵椂锛?span style="color: #0000ff;">灏嗘鍦ㄤ娇鐢ㄧ殑鍐呭瓨涓殑瀛樻椿瀵硅薄澶嶅埗鍒版湭浣跨敤鐨勫唴瀛樺潡涓紝鐒跺悗娓呴櫎姝e湪浣跨敤鐨勫唴瀛樺潡涓殑鎵€鏈夊璞°€?/p>

浼樼偣锛?/strong>

杩欐牱浣垮緱姣忔閮芥槸瀵规暣涓崐鍖鸿繘琛屽洖鏀讹紝鍐呭瓨鍒嗛厤鏃朵篃灏?span style="color: #0000ff;">涓嶇敤鑰冭檻鍐呭瓨纰庣墖绛夋儏鍐?/p>

鍙绉诲姩鍫嗛《鎸囬拡锛屾寜椤哄簭鍒嗛厤鍐呭瓨鍗冲彲锛屽疄鐜扮畝鍗曪紝杩愯鏁堢巼楂?/strong>

缂虹偣锛氱┖闂寸殑娴垂

銆€銆€浠庝互涓婃弿杩颁笉闅剧湅鍑猴紝澶嶅埗绠楁硶瑕佹兂浣跨敤锛屾渶璧风爜瀵硅薄鐨勫瓨娲荤巼瑕侀潪甯镐綆鎵嶈銆?/p>

銆€銆€鐜板湪鐨勫晢涓氳櫄鎷熸満閮介噰鐢ㄨ繖绉嶆敹闆嗙畻娉曟潵鍥炴敹鏂扮敓浠o紝鏂扮敓浠d腑鐨勫璞?8%閮芥槸鈥滄湞鐢熷姝烩€濈殑锛屾墍浠ュ苟涓嶉渶瑕佹寜鐓?:1鐨勬瘮渚嬫潵鍒掑垎鍐呭瓨绌洪棿锛岃€屾槸灏?span style="color: #0000ff;">鍐呭瓨鍒嗕负涓€鍧楁瘮杈冨ぇ鐨凟den绌洪棿鍜屼袱鍧楄緝灏忕殑Survivor绌洪棿锛屾瘡娆′娇鐢‥den鍜屽叾涓竴鍧桽urvivor銆傚綋鍥炴敹鏃讹紝灏咵den鍜孲urvivor涓繕瀛樻椿鐫€鐨勫璞′竴娆℃€у湴澶嶅埗鍒板彟澶栦竴鍧桽urvivor绌洪棿涓婏紝鏈€鍚庢竻鐞嗘帀Eden鍜屽垰鎵嶇敤杩囩殑Survivor绌洪棿銆?span style="color: #0000ff;">HotSpot铏氭嫙鏈洪粯璁den鍜孲urvivor鐨勫ぇ灏忔瘮渚嬫槸8:1锛屼篃灏辨槸璇达紝姣忔鏂扮敓浠d腑鍙敤鍐呭瓨绌洪棿涓烘暣涓柊鐢熶唬瀹归噺鐨?0%锛?0%+10%锛夛紝鍙湁10%鐨勭┖闂翠細琚氮璐广€?/p>

褰撶劧锛?8%鐨勫璞″彲鍥炴敹鍙槸涓€鑸満鏅笅鐨勬暟鎹紝鎴戜滑娌℃湁鍔炴硶淇濊瘉姣忔鍥炴敹閮藉彧鏈変笉澶氫簬10%鐨勫璞″瓨娲伙紝褰揝urvivor绌洪棿涓嶅鐢ㄦ椂锛岄渶瑕佷緷璧栦簬鑰佸勾浠h繘琛屽垎閰?span style="color: #ff0000;">鎷呬繚锛屾墍浠ュぇ瀵硅薄鐩存帴杩涘叆鑰佸勾浠?/strong>銆傛暣涓繃绋嬪涓嬪浘鎵€绀猴細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

3銆佹爣璁?鏁寸悊绠楁硶锛氾紙鑰佸勾浠g殑GC锛?/strong>

聽聽聽 澶嶅埗绠楁硶鍦ㄥ璞?span style="color: #0000ff;">瀛樻椿鐜囬珮鐨勬椂鍊欒杩涜杈冨鐨勫鍒舵搷浣滐紝鏁堢巼灏嗕細闄嶄綆锛屾墍浠ュ湪鑰佸勾浠d腑涓€鑸笉鑳界洿鎺ラ€夌敤杩欑绠楁硶銆?/p>

姒傚康锛?/strong>

鏍囪闃舵锛氬厛閫氳繃鏍硅妭鐐癸紝鏍囪鎵€鏈変粠鏍硅妭鐐瑰紑濮嬬殑鍙揪瀵硅薄銆傚洜姝わ紝鏈鏍囪鐨勫璞″氨鏄湭琚紩鐢ㄧ殑鍨冨溇瀵硅薄

鏁寸悊闃舵锛?strong>灏?/strong>灏嗘墍鏈夌殑瀛樻椿瀵硅薄鍘嬬缉鍒板唴瀛樼殑涓€绔?/strong>锛涗箣鍚庯紝娓呯悊杈圭晫澶栨墍鏈夌殑绌洪棿

浼樼偣锛?/strong>

銆€銆€涓嶄細浜х敓鍐呭瓨纰庣墖銆?/p>

缂虹偣锛?/strong>

銆€銆€鍦ㄦ爣璁扮殑鍩虹涔嬩笂杩橀渶瑕佽繘琛屽璞$殑绉诲姩锛屾垚鏈浉瀵硅緝楂橈紝鏁堢巼涔熶笉楂樸€?/p>

瀹冧滑鐨勫尯鍒涓嬶細锛?gt;琛ㄧず鍓嶈€呰浼樹簬鍚庤€咃紝=琛ㄧず涓よ€呮晥鏋滀竴鏍凤級

锛?锛夋晥鐜囷細澶嶅埗绠楁硶 > 鏍囪/鏁寸悊绠楁硶 > 鏍囪/娓呴櫎绠楁硶锛堟澶勭殑鏁堢巼鍙槸绠€鍗曠殑瀵规瘮鏃堕棿澶嶆潅搴︼紝瀹為檯鎯呭喌涓嶄竴瀹氬姝わ級銆?/p>

锛?锛夊唴瀛樻暣榻愬害锛氬鍒剁畻娉?鏍囪/鏁寸悊绠楁硶>鏍囪/娓呴櫎绠楁硶銆?/p>

锛?锛夊唴瀛樺埄鐢ㄧ巼锛氭爣璁?鏁寸悊绠楁硶=鏍囪/娓呴櫎绠楁硶>澶嶅埗绠楁硶銆?/p>

娉?锛氭爣璁?鏁寸悊绠楁硶涓嶄粎鍙互寮ヨˉ鏍囪-娓呴櫎绠楁硶褰撲腑锛屽唴瀛樺尯鍩熷垎鏁g殑缂虹偣锛屼篃娑堥櫎浜嗗鍒剁畻娉曞綋涓紝鍐呭瓨鍑忓崐鐨勯珮棰濅唬浠枫€?/p>

娉?锛氬彲浠ョ湅鍒版爣璁?娓呴櫎绠楁硶鏄瘮杈冭惤鍚庣殑绠楁硶浜嗭紝浣嗘槸鍚庝袱绉嶇畻娉曞嵈鏄湪姝ゅ熀纭€涓婂缓绔嬬殑銆?/p>

娉?锛氭椂闂翠笌绌洪棿涓嶅彲鍏煎緱銆?/p>

4銆佸垎浠f敹闆嗙畻娉曪細

銆€銆€褰撳墠鍟嗕笟铏氭嫙鏈虹殑GC閮芥槸閲囩敤鐨勨€滃垎浠f敹闆嗙畻娉曗€濓紝杩欏苟涓嶆槸浠€涔堟柊鐨勬€濇兂锛?span style="color: #0000ff;">鍙槸鏍规嵁瀵硅薄鐨勫瓨娲诲懆鏈熺殑涓嶅悓灏嗗唴瀛樺垝鍒嗕负鍑犲潡鍎?/strong>銆備竴鑸槸鎶奐ava鍫嗗垎涓烘柊鐢熶唬鍜岃€佸勾浠o細鐭懡瀵硅薄褰掍负鏂扮敓浠o紝闀垮懡瀵硅薄褰掍负鑰佸勾浠?/strong>銆?/p>

  • 瀛樻椿鐜囦綆锛氬皯閲忓璞″瓨娲伙紝閫傚悎澶嶅埗绠楁硶锛氬湪鏂扮敓浠d腑锛屾瘡娆C鏃堕兘鍙戠幇鏈夊ぇ鎵瑰璞℃鍘伙紝鍙湁灏戦噺瀛樻椿锛堟柊鐢熶唬涓?8%鐨勫璞¢兘鏄€滄湞鐢熷姝烩€濓級锛岄偅灏遍€夌敤澶嶅埗绠楁硶锛屽彧闇€瑕佷粯鍑哄皯閲忓瓨娲诲璞$殑澶嶅埗鎴愭湰灏卞彲浠ュ畬鎴怗C銆?/li>
  • 瀛樻椿鐜囬珮锛氬ぇ閲忓璞″瓨娲?/span>锛岄€傚悎鐢ㄦ爣璁?娓呯悊/鏍囪-鏁寸悊锛氬湪鑰佸勾浠d腑锛屽洜涓哄璞″瓨娲荤巼楂樸€佹病鏈夐澶栫┖闂村浠栬繘琛屽垎閰嶆媴淇濓紝灏卞繀椤讳娇鐢ㄢ€滄爣璁?娓呯悊鈥?鈥滄爣璁?鏁寸悊鈥濈畻娉曡繘琛孏C銆?/li>

娉細鑰佸勾浠g殑瀵硅薄涓紝鏈変竴灏忛儴鍒嗘槸鍥犱负鍦ㄦ柊鐢熶唬鍥炴敹鏃讹紝鑰佸勾浠e仛鎷呬繚锛岃繘鏉ョ殑瀵硅薄锛涚粷澶ч儴鍒嗗璞℃槸鍥犱负寰堝娆C閮芥病鏈夎鍥炴敹鎺夎€岃繘鍏ヨ€佸勾浠?/strong>銆?/p>

鍏€佸瀮鍦炬敹闆嗗櫒锛?/strong>

GC杩涜鏃跺繀椤诲仠椤挎墍鏈夌殑Java鎵ц绾跨▼----Stop The World锛?/strong>

绋嬪簭鎵ц鏃跺苟闈炲湪鎵€鏈夊湴鏂归兘鑳藉仠椤夸笅鏉ュ紑濮婫C锛屽彧鏈夊湪鍒拌揪瀹夊叏鐐规椂鎵嶈兘鏆傚仠--Sagepoint銆?/strong>

瀹夊叏鐐圭殑閫夊畾锛?/strong>鏄惁鍏锋湁璁╃▼搴忛暱鏃堕棿鎵ц鐨勭壒寰佷负鏍囧噯銆傛柟娉曡皟鐢ㄣ€佸惊鐜烦杞€佸紓甯歌烦杞瓑杩欎簺鍔熻兘鐨勬寚浠ゆ墠浼氫骇鐢烻afepoint銆?/strong>

GC鍙戠敓鏃惰鎵€鏈夌嚎绋嬮兘鈥滆窇鈥濆埌鏈€杩戠殑瀹夊叏鐐瑰仠椤夸笅鏉ワ紝涓ょ鏂规锛?/strong>

1銆佹姠鍏堝紡涓柇锛氫笉闇€瑕佺嚎绋嬬殑鎵ц浠g爜涓诲姩鍘婚厤鍚堬紝鍦℅C鍙戠敓鏃讹紝棣栧厛鎶婃墍鏈夌嚎绋嬪叏閮ㄤ腑鏂紝濡傛灉鍙戠幇鏈夌嚎绋嬩腑鏂殑鍦版柟涓嶅湪瀹夊叏鐐逛笂锛岃瀹冣€滆窇鈥濆埌瀹夊叏鐐逛笂銆?/span>

2銆佷富鍔ㄥ紡涓柇锛欸C闇€瑕佷腑鏂嚎绋嬬殑鏃跺€欙紝涓嶉渶瑕佸绾跨▼鎿嶄綔锛屼粎浠呯畝鍗曠殑璁剧疆涓€涓爣蹇楋紝鍚勪釜绾跨▼鎵ц鏃朵富鍔ㄥ幓杞杩欎釜鏍囧織锛屽彂鐜颁腑鏂爣蹇椾负鐪熸椂灏辫嚜宸变腑鏂寕璧枫€傝疆璇㈡爣蹇楃殑鍦版柟鍜屽畨鍏ㄧ偣鏄噸鍚堢殑銆?/span>

绾跨▼澶勪簬Sleep鐘舵€佹垨Blocked鐘舵€侊紝鏃犳硶鍝嶅簲JVM鐨勪腑鏂姹傦紝璧板埌瀹夊叏鐐圭殑鍦版柟涓柇鎸傝捣---闇€瑕?/span>瀹夊叏鍖哄煙瑙e喅锛?/strong>鍦ㄤ竴娈典唬鐮佺墖娈典箣鍚庯紝寮曠敤鍏崇郴涓嶄細鍙戠敓鍙樺寲銆傚湪杩欎釜鍖哄煙涓殑浠绘剰鍦版柟寮€濮婫C閮芥槸瀹夊叏鐨勩€?/span>

濡傛灉璇存敹闆嗙畻娉曟槸鍐呭瓨鍥炴敹鐨勬柟娉曡锛岄偅涔堝瀮鍦炬敹闆嗗櫒灏辨槸鍐呭瓨鍥炴敹鐨勫叿浣撳疄鐜般€?/p>

铏界劧鎴戜滑鍦ㄥ鍚勭鏀堕泦鍣ㄨ繘琛屾瘮杈冿紝浣嗗苟闈炰负浜嗘寫鍑轰竴涓渶濂界殑鏀堕泦鍣ㄣ€傚洜涓虹洿鍒扮幇鍦ㄤ负姝㈣繕娌℃湁鏈€濂界殑鏀堕泦鍣ㄥ嚭鐜帮紝鏇村姞娌℃湁涓囪兘鐨勬敹闆嗗櫒锛屾墍浠ユ垜浠?span style="color: #0000ff;">閫夋嫨鐨勫彧鏄鍏蜂綋搴旂敤鏈€鍚堥€傜殑鏀堕泦鍣?/strong>銆?/p>

1銆丼erial鏀堕泦鍣細锛堜覆琛屾敹闆嗗櫒锛?/strong>

杩欎釜鏀堕泦鍣ㄦ槸涓€涓崟绾跨▼鐨勬敹闆嗗櫒锛屼絾瀹冪殑鍗曠嚎绋嬬殑鎰忎箟骞朵笉浠呬粎璇存槑瀹冨彧浼氫娇鐢ㄤ竴涓狢PU鎴栦竴鏉℃敹闆嗙嚎绋嬪幓瀹屾垚鍨冨溇鏀堕泦宸ヤ綔锛屾洿閲嶈鐨勬槸鍦ㄥ畠杩涜鍨冨溇鏀堕泦鏃讹紝蹇呴』鏆傚仠鍏朵粬鎵€鏈夌殑宸ヤ綔绾跨▼锛?span style="color: #0000ff;">Stop-The-World锛氬皢鐢ㄦ埛姝e父宸ヤ綔鐨勭嚎绋嬪叏閮ㄦ殏鍋滄帀锛夛紝鐩村埌瀹冩敹闆嗙粨鏉熴€傛敹闆嗗櫒鐨勮繍琛岃繃绋嬪涓嬪浘鎵€绀猴細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涓婂浘涓細

  • 鏂扮敓浠i噰鐢ㄥ鍒剁畻娉曪紝Stop-The-World
  • 鑰佸勾浠i噰鐢ㄦ爣璁?鏁寸悊绠楁硶锛孲top-The-World

褰撳畠杩涜GC宸ヤ綔鐨勬椂鍊欙紝铏界劧浼氶€犳垚Stop-The-World锛屼絾瀹冨瓨鍦ㄦ湁瀛樺湪鐨勫師鍥狅細姝f槸鍥犱负瀹冪殑绠€鍗曡€岄珮鏁堬紙涓庡叾浠栨敹闆嗗櫒鐨勫崟绾跨▼姣旓級锛屽浜庨檺瀹氬崟涓狢PU鐨勭幆澧冩潵璇达紝娌℃湁绾跨▼浜や簰鐨勫紑閿€锛屼笓蹇冨仛GC锛岃嚜鐒跺彲浠ヨ幏寰楁渶楂樼殑鍗曠嚎绋嬫墜鏈烘晥鐜囥€傛墍浠?span style="color: #0000ff;">Serial鏀堕泦鍣ㄥ浜庤繍琛屽湪client妯″紡涓嬫槸涓€涓緢濂界殑閫夋嫨锛堝畠渚濈劧鏄櫄鎷熸満杩愯鍦?span style="color: #0000ff;">client妯″紡涓?/strong>鐨勯粯璁?span style="color: #0000ff;">鏂扮敓浠?/strong>鏀堕泦鍣級銆?/p>

2銆丳arNew鏀堕泦鍣細Serial鏀堕泦鍣ㄧ殑澶氱嚎绋嬬増鏈紙浣跨敤澶氭潯绾跨▼杩涜GC锛?/p>

銆€銆€ParNew鏀堕泦鍣ㄦ槸Serial鏀堕泦鍣ㄧ殑澶氱嚎绋嬬増鏈€?/p>

銆€銆€瀹冩槸杩愯鍦╯erver妯″紡涓嬬殑棣栭€夋柊鐢熶唬鏀堕泦鍣?/span>锛岄櫎浜哠erial鏀堕泦鍣ㄥ锛岀洰鍓嶅彧鏈夊畠鑳戒笌CMS鏀堕泦鍣ㄩ厤鍚堝伐浣溿€侰MS鏀堕泦鍣ㄦ槸涓€涓璁や负鍏锋湁鍒掓椂浠f剰涔夌殑骞跺彂鏀堕泦鍣紝鍥犳濡傛灉鏈変竴涓瀮鍦炬敹闆嗗櫒鑳藉拰瀹冧竴璧锋惌閰嶄娇鐢ㄨ鍏舵洿鍔犲畬缇庯紝閭h繖涓敹闆嗗櫒蹇呯劧涔熸槸涓€涓笉鍙垨缂虹殑閮ㄥ垎浜嗐€傛敹闆嗗櫒鐨勮繍琛岃繃绋嬪涓嬪浘鎵€绀猴細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涓婂浘涓細

  • 鏂扮敓浠i噰鐢ㄥ鍒剁畻娉曪紝Stop-The-World
  • 鑰佸勾浠i噰鐢ㄦ爣璁?鏁寸悊绠楁硶锛孲top-The-World

3銆丳arNew Scanvenge鏀堕泦鍣?/strong>

銆€銆€绫讳技ParNew锛屼絾鏇村姞鍏虫敞鍚炲悙閲?/span>銆?/strong>鐩爣鏄細杈惧埌涓€涓?span style="color: #0000ff;">鍙帶鍒跺悶鍚愰噺鐨勬敹闆嗗櫒銆?/p>

鍋滈】鏃堕棿鍜屽悶鍚愰噺涓嶅彲鑳藉悓鏃惰皟浼?/strong>銆傛垜浠竴鏂逛拱甯屾湜鍋滈】鏃堕棿灏戯紝鍙﹀涓€鏂归潰甯屾湜鍚炲悙閲忛珮锛屽叾瀹炶繖鏄煕鐩剧殑銆傚洜涓猴細鍦℅C鐨勬椂鍊欙紝鍨冨溇鍥炴敹鐨勫伐浣滄€婚噺鏄笉鍙樼殑锛屽鏋滃皢鍋滈】鏃堕棿鍑忓皯锛岄偅棰戠巼灏变細鎻愰珮锛涙棦鐒堕鐜囨彁楂樹簡锛岃鏄庡氨浼氶绻佺殑杩涜GC锛岄偅鍚炲悙閲忓氨浼氬噺灏戯紝鎬ц兘灏变細闄嶄綆銆?/p>

鍚炲悙閲?/strong>锛欳PU鐢ㄤ簬鐢ㄦ埛浠g爜鐨勬椂闂?CPU鎬绘秷鑰楁椂闂寸殑姣斿€硷紝鍗?杩愯鐢ㄦ埛浠g爜鐨勬椂闂?(杩愯鐢ㄦ埛浠g爜鏃堕棿+鍨冨溇鏀堕泦鏃堕棿)銆傛瘮濡傦紝铏氭嫙鏈烘€诲叡杩愯浜?00鍒嗛挓锛屽叾涓瀮鍦炬敹闆嗚姳鎺?鍒嗛挓锛岄偅鍚炲悙閲忓氨鏄?9%銆?/p>

4銆丟1鏀堕泦鍣細

銆€銆€鏄綋浠婃敹闆嗗櫒鍙戝睍鐨勬渶鍓嶈█鎴愭灉涔嬩竴锛岀煡閬搄dk1.7锛宻un鍏徃鎵嶈涓哄畠杈惧埌浜嗚冻澶熸垚鐔熺殑鍟嗙敤绋嬪害銆?/p>

浼樼偣锛?/strong>

銆€銆€瀹冩渶澶х殑浼樼偣鏄粨鍚堜簡绌洪棿鏁村悎锛屼笉浼氫骇鐢熷ぇ閲忕殑纰庣墖锛屼篃闄嶄綆浜嗚繘琛実c鐨勯鐜囥€?/p>

銆€銆€浜屾槸鍙互璁╀娇鐢ㄨ€?span style="color: #0000ff;">鏄庣‘鎸囧畾鎸囧畾鍋滈】鏃堕棿銆傦紙鍙互鎸囧畾涓€涓渶灏忔椂闂达紝瓒呰繃杩欎釜鏃堕棿锛屽氨涓嶄細杩涜鍥炴敹浜嗭級

瀹冩湁浜嗚繖涔堥珮鏁堢巼鐨勫師鍥犱箣涓€灏辨槸锛氬鍨冨溇鍥炴敹杩涜浜嗗垝鍒嗕紭鍏堢骇鐨勬搷浣?/strong>锛岃繖绉嶆湁浼樺厛绾х殑鍖哄煙鍥炴敹鏂瑰紡淇濊瘉浜嗗畠鐨勯珮鏁堢巼銆?/p>

濡傛灉浣犵殑搴旂敤杩芥眰鍋滈】锛岄偅G1鐜板湪宸茬粡鍙互浣滀负涓€涓彲灏濊瘯鐨勯€夋嫨锛涘鏋滀綘鐨勫簲鐢ㄨ拷姹傚悶鍚愰噺锛岄偅G1骞朵笉浼氫负浣犲甫鏉ヤ粈涔堢壒鍒殑濂藉銆?/p>

娉細浠ヤ笂鎵€鏈夌殑鏀堕泦鍣ㄥ綋涓紝褰撴墽琛孏C鏃讹紝閮戒細stop the world锛屼絾鏄笅闈㈢殑CMS鏀堕泦鍣ㄥ嵈涓嶄細杩欐牱銆?/p>

5銆丆MS鏀堕泦鍣細锛堣€佸勾浠f敹闆嗗櫒锛?/strong>

CMS鏀堕泦鍣紙Concurrent Mark Sweep锛?span style="color: #0000ff;">骞跺彂鏍囪娓呴櫎锛夋槸涓€绉?span style="color: #0000ff;">浠ヨ幏鍙栨渶鐭洖鏀跺仠椤挎椂闂翠负鐩爣鐨勬敹闆嗗櫒銆傞€傚悎搴旂敤鍦ㄤ簰鑱旂綉绔欐垨鑰匓/S绯荤粺鐨勬湇鍔″櫒涓婏紝杩欑被搴旂敤灏ゅ叾閲嶈鏈嶅姟鍣ㄧ殑鍝嶅簲閫熷害锛屽笇鏈涚郴缁熷仠椤挎椂闂存渶鐭€?/p>

CMS鏀堕泦鍣ㄨ繍琛岃繃绋嬶細锛堢潃閲嶅疄鐜颁簡鏍囪鐨勮繃绋嬶級

锛?锛夊垵濮嬫爣璁?/p>

銆€銆€鏍瑰彲浠ョ洿鎺ュ叧鑱斿埌鐨勫璞?/p>

銆€銆€閫熷害蹇?/p>

锛?锛夊苟鍙戞爣璁帮紙鍜岀敤鎴风嚎绋嬩竴璧凤級

銆€銆€涓昏鏍囪杩囩▼锛屾爣璁板叏閮ㄥ璞?/p>

锛?锛夐噸鏂版爣璁?/p>

銆€銆€鐢变簬骞跺彂鏍囪鏃讹紝鐢ㄦ埛绾跨▼渚濈劧杩愯锛屽洜姝ゅ湪姝e紡娓呯悊鍓嶏紝鍐嶅仛淇

锛?锛夊苟鍙戞竻闄わ紙鍜岀敤鎴风嚎绋嬩竴璧凤級

銆€銆€鍩轰簬鏍囪缁撴灉锛岀洿鎺ユ竻鐞嗗璞?/p>

鏁翠釜杩囩▼濡備笅鍥炬墍绀猴細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涓婂浘涓紝鍒濆鏍囪鍜岄噸鏂版爣璁版椂锛岄渶瑕乻top the world銆傛暣涓繃绋嬩腑鑰楁椂鏈€闀跨殑鏄苟鍙戞爣璁板拰骞跺彂娓呴櫎锛岃繖涓や釜杩囩▼閮藉彲浠ュ拰鐢ㄦ埛绾跨▼涓€璧峰伐浣溿€?/p>

浼樼偣锛?/strong>

銆€銆€骞跺彂鏀堕泦锛屼綆鍋滈】

缂虹偣锛?/strong>

锛?锛夊鑷寸敤鎴风殑鎵ц閫熷害闄嶄綆銆?/p>

锛?锛夋棤娉曞鐞嗘诞鍔ㄥ瀮鍦俱€傚洜涓哄畠閲囩敤鐨勬槸鏍囪-娓呴櫎绠楁硶銆傛湁鍙兘鏈変簺鍨冨溇鍦ㄦ爣璁颁箣鍚庯紝闇€瑕佺瓑鍒颁笅涓€娆C鎵嶄細琚洖鏀躲€傚鏋淐MS杩愯鏈熼棿鏃犳硶婊¤冻绋嬪簭闇€瑕侊紝閭d箞灏变細涓存椂鍚敤Serial Old鏀堕泦鍣ㄦ潵閲嶆柊杩涜鑰佸勾浠g殑鎵嬫満銆?/p>

锛?锛夌敱浜庨噰鐢ㄧ殑鏄爣璁?娓呴櫎绠楁硶锛岄偅涔堝氨浼氫骇鐢熷ぇ閲忕殑纰庣墖銆傚線寰€浼氬嚭鐜拌€佸勾浠h繕鏈夊緢澶х殑绌洪棿鍓╀綑锛屼絾鏄棤娉曟壘鍒拌冻澶熷ぇ鐨勮繛缁┖闂存潵鍒嗛厤褰撳墠瀵硅薄锛屼笉寰椾笉鎻愬墠瑙﹀彂涓€娆ull GC

鐤戦棶锛?/strong>鏃㈢劧鏍囪-娓呴櫎绠楁硶浼氶€犳垚鍐呭瓨绌洪棿鐨勭鐗囧寲锛孋MS鏀堕泦鍣ㄤ负浠€涔堜娇鐢ㄦ爣璁版竻闄ょ畻娉曡€屼笉鏄娇鐢ㄦ爣璁版暣鐞嗙畻娉曪細

绛旀锛?/strong>

銆€銆€CMS鏀堕泦鍣ㄦ洿鍔犲叧娉ㄥ仠椤匡紝瀹冨湪鍋欸C鐨勬椂鍊欐槸鍜岀敤鎴风嚎绋嬩竴璧峰伐浣滅殑锛堝苟鍙戞墽琛岋級锛屽鏋滀娇鐢ㄦ爣璁版暣鐞嗙畻娉曠殑璇濓紝閭d箞鍦ㄦ竻鐞嗙殑鏃跺€欏氨浼氬幓绉诲姩鍙敤瀵硅薄鐨勫唴瀛樼┖闂达紝閭d箞搴旂敤绋嬪簭鐨勭嚎绋嬪氨寰堟湁鍙兘鎵句笉鍒板簲鐢ㄥ璞″湪鍝噷銆?/p>

涓冦€丣ava鍫嗗唴瀛樺垝鍒嗭細

鏍规嵁瀵硅薄鐨勫瓨娲荤巼锛堝勾榫勶級锛孞ava瀵瑰唴瀛樺垝鍒嗕负3绉嶏細鏂扮敓浠c€佽€佸勾浠c€佹案涔呬唬锛?/p>

1銆佹柊鐢熶唬锛?/strong>

姣斿鎴戜滑鍦ㄦ柟娉曚腑鍘籲ew涓€涓璞★紝閭h繖鏂规硶璋冪敤瀹屾瘯鍚庯紝瀵硅薄灏变細琚洖鏀讹紝杩欏氨鏄竴涓吀鍨嬬殑鏂扮敓浠e璞°€偮?/p>

鐜板湪鐨勫晢涓氳櫄鎷熸満閮介噰鐢ㄨ繖绉嶆敹闆嗙畻娉曟潵鍥炴敹鏂扮敓浠o紝鏂扮敓浠d腑鐨勫璞?8%閮芥槸鈥滄湞鐢熷姝烩€濈殑锛屾墍浠ュ苟涓嶉渶瑕佹寜鐓?:1鐨勬瘮渚嬫潵鍒掑垎鍐呭瓨绌洪棿锛岃€屾槸灏?span style="color: #0000ff;">鍐呭瓨鍒嗕负涓€鍧楁瘮杈冨ぇ鐨凟den绌洪棿鍜屼袱鍧楄緝灏忕殑Survivor绌洪棿锛屾瘡娆′娇鐢‥den鍜屽叾涓竴鍧桽urvivor銆傚綋鍥炴敹鏃讹紝灏咵den鍜孲urvivor涓繕瀛樻椿鐫€鐨勫璞′竴娆℃€у湴澶嶅埗鍒板彟澶栦竴鍧桽urvivor绌洪棿涓婏紝鏈€鍚庢竻鐞嗘帀Eden鍜屽垰鎵嶇敤杩囩殑Survivor绌洪棿銆?span style="color: #0000ff;">HotSpot铏氭嫙鏈洪粯璁den鍜孲urvivor鐨勫ぇ灏忔瘮渚嬫槸8:1锛屼篃灏辨槸璇达紝姣忔鏂扮敓浠d腑鍙敤鍐呭瓨绌洪棿涓烘暣涓柊鐢熶唬瀹归噺鐨?0%锛?0%+10%锛夛紝鍙湁10%鐨勭┖闂翠細琚氮璐广€?/p>

褰撶劧锛?8%鐨勫璞″彲鍥炴敹鍙槸涓€鑸満鏅笅鐨勬暟鎹紝鎴戜滑娌℃湁鍔炴硶淇濊瘉姣忔鍥炴敹閮藉彧鏈変笉澶氫簬10%鐨勫璞″瓨娲伙紝褰揝urvivor绌洪棿涓嶅鐢ㄦ椂锛岄渶瑕佷緷璧栦簬鑰佸勾浠h繘琛屽垎閰嶆媴淇濓紝鎵€浠ュぇ瀵硅薄鐩存帴杩涘叆鑰佸勾浠?/strong>銆傚悓鏃讹紝闀挎湡瀛樻椿鐨勫璞″皢杩涘叆鑰佸勾浠?/span>锛?/strong>铏氭嫙鏈虹粰姣忎釜瀵硅薄瀹氫箟涓€涓勾榫勮鏁板櫒锛夈€?/p>

鏉ョ湅涓嬮潰杩欏紶鍥撅細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

Minor GC鍜孎ull GC锛?/strong>

GC鍒嗕负涓ょ锛歁inor GC鍜孎ull GC

Minor GC锛?/strong>

銆€銆€Minor GC鏄彂鐢熷湪鏂扮敓浠d腑鐨勫瀮鍦炬敹闆嗗姩浣滐紝閲囩敤鐨勬槸澶嶅埗绠楁硶銆?/p>

瀵硅薄鍦‥den鍜孎rom鍖哄嚭鐢熷悗锛屽湪缁忚繃涓€娆inor GC鍚庯紝濡傛灉瀵硅薄杩樺瓨娲伙紝骞朵笖鑳藉琚玹o鍖烘墍瀹圭撼锛岄偅涔堝湪浣跨敤澶嶅埗绠楁硶鏃惰繖浜涘瓨娲诲璞″氨浼氳澶嶅埗鍒皌o鍖哄煙锛岀劧鍚庢竻鐞嗘帀Eden鍖哄拰from鍖猴紝骞跺皢杩欎簺瀵硅薄鐨勫勾榫勮缃负1锛屼互鍚庡璞″湪Survivor鍖烘瘡鐔繃涓€娆inor GC锛屽氨灏嗗璞$殑骞撮緞+1锛屽綋瀵硅薄鐨勫勾榫勮揪鍒版煇涓€兼椂锛堥粯璁ゆ槸15宀侊紝鍙互閫氳繃鍙傛暟 --XX:MaxTenuringThreshold璁剧疆锛夛紝杩欎簺瀵硅薄灏变細鎴愪负鑰佸勾浠c€?/p>

浣嗚繖涔熸槸涓嶄竴瀹氱殑锛屽浜庝竴浜涜緝澶х殑瀵硅薄锛堝嵆闇€瑕佸垎閰嶄竴鍧楄緝澶х殑杩炵画鍐呭瓨绌洪棿锛夊垯鏄洿鎺ヨ繘鍏ヨ€佸勾浠?/p>

Full GC锛?/strong>

銆€銆€Full GC鏄彂鐢熷湪鑰佸勾浠g殑鍨冨溇鏀堕泦鍔ㄤ綔锛岄噰鐢ㄧ殑鏄爣璁?娓呴櫎/鏁寸悊绠楁硶銆?/p>

鑰佸勾浠i噷鐨勫璞″嚑涔庨兘鏄湪Survivor鍖虹啲杩囨潵鐨勶紝涓嶄細閭d箞瀹规槗姝绘帀銆傚洜姝ull GC鍙戠敓鐨勬鏁颁笉浼氭湁Minor GC閭d箞棰戠箒锛屽苟涓斿仛涓€娆ull GC瑕佹瘮鍋氫竴娆inor GC鐨勬椂闂磋闀裤€?/p>

鍙﹀锛屽鏋滈噰鐢ㄧ殑鏄爣璁?娓呴櫎绠楁硶鐨勮瘽浼氫骇鐢熻澶氱鐗囷紝姝ゅ悗濡傛灉闇€瑕佷负杈冨ぇ鐨勫璞″垎閰嶅唴瀛樼┖闂存椂锛岃嫢鏃犳硶鎵惧埌瓒冲鐨勮繛缁殑鍐呭瓨绌洪棿锛屽氨浼氭彁鍓嶈Е鍙戜竴娆C銆?/p>

2銆佽€佸勾浠o細

聽聽聽 鍦ㄦ柊鐢熶唬涓粡鍘嗕簡N娆″瀮鍦惧洖鏀跺悗浠嶇劧瀛樻椿鐨勫璞″氨浼氳鏀惧埌鑰佸勾浠d腑銆傝€屼笖澶у璞$洿鎺ヨ繘鍏ヨ€佸勾浠c€?/p>

3銆佹案涔呬唬锛?/strong>

聽聽聽 鍗虫柟娉曞尯銆?/p>

鍏€佺被鍔犺浇鏈哄埗锛?/strong>

聽聽聽 铏氭嫙鏈烘妸鎻忚堪绫荤殑鏁版嵁浠嶤lass鏂囦欢鍔犺浇鍒板唴瀛橈紝骞跺鏁版嵁杩涜鏍¢獙銆佽浆鎹㈣В鏋愬拰鍒濆鍖栵紝鏈€缁堝舰鎴愬彲浠ヨ铏氭嫙鏈虹洿鎺ヤ娇鐢ㄧ殑Java绫诲瀷锛岃繖灏辨槸铏氭嫙鏈虹殑绫诲姞杞芥満鍒躲€?/p>

绫诲姞杞界殑杩囩▼锛?/strong>

聽聽聽 鍖呮嫭鍔犺浇銆侀摼鎺ワ紙鍚獙璇併€佸噯澶囥€佽В鏋愶級銆佸垵濮嬪寲

濡備笅鍥炬墍绀猴細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

1銆佸姞杞斤細

銆€銆€绫诲姞杞芥寚鐨勬槸灏嗙被鐨刢lass鏂囦欢璇诲叆鍐呭瓨锛屽苟涓轰箣鍒涘缓涓€涓猨ava.lang.Class瀵硅薄锛屼綔涓烘柟娉曞尯杩欎釜绫荤殑鏁版嵁璁块棶鐨勫叆鍙?/strong>銆?/p>

涔熷氨鏄锛屽綋绋嬪簭涓娇鐢ㄤ换浣曠被鏃讹紝绯荤粺閮戒細涓轰箣寤虹珛涓€涓猨ava.lang.Class瀵硅薄銆傚叿浣撳寘鎷互涓嬩笁涓儴鍒嗭細

锛?锛夐€氳繃绫荤殑鍏ㄥ悕浜х敓瀵瑰簲绫荤殑浜岃繘鍒舵暟鎹祦銆傦紙鏍规嵁early load鍘熺悊锛屽鏋滄病鎵惧埌瀵瑰簲鐨勭被鏂囦欢锛屽彧鏈夊湪绫诲疄闄呬娇鐢ㄦ椂鎵嶄細鎶涘嚭閿欒锛?/p>

锛?锛夊垎鏋愬苟灏嗚繖浜涗簩杩涘埗鏁版嵁娴佽浆鎹负鏂规硶鍖烘柟娉曞尯鐗瑰畾鐨勬暟鎹粨鏋?/p>

锛?锛夊垱寤哄搴旂被鐨刯ava.lang.Class瀵硅薄锛屼綔涓烘柟娉曞尯鐨勫叆鍙o紙鏈変簡瀵瑰簲鐨凜lass瀵硅薄锛屽苟涓嶆剰鍛崇潃杩欎釜绫诲凡缁忓畬鎴愪簡鍔犺浇閾炬帴锛?/p>

閫氳繃浣跨敤涓嶅悓鐨勭被鍔犺浇鍣紝鍙互浠庝笉鍚屾潵婧愬姞杞界被鐨勪簩杩涘埗鏁版嵁锛岄€氬父鏈夊涓嬪嚑绉嶆潵婧愶細

锛?锛変粠鏈湴鏂囦欢绯荤粺鍔犺浇class鏂囦欢锛岃繖鏄粷澶ч儴鍒嗙▼搴忕殑鍔犺浇鏂瑰紡

锛?锛変粠jar鍖呬腑鍔犺浇class鏂囦欢锛岃繖绉嶆柟寮忎篃寰堝父瑙侊紝渚嬪jdbc缂栫▼鏃剁敤鍒扮殑鏁版嵁搴撻┍鍔ㄧ被灏辨槸鏀惧湪jar鍖呬腑锛宩vm鍙互浠巎ar鏂囦欢涓洿鎺ュ姞杞借class鏂囦欢

锛?锛夐€氳繃缃戠粶鍔犺浇class鏂囦欢

锛?锛夋妸涓€涓狫ava婧愭枃浠跺姩鎬佺紪璇戙€佸苟鎵ц鍔犺浇

2銆侀摼鎺ワ細

聽聽聽 閾炬帴鎸囩殑鏄皢Java绫荤殑浜岃繘鍒舵枃浠跺悎骞跺埌jvm鐨勮繍琛岀姸鎬佷箣涓殑杩囩▼銆傚湪閾炬帴涔嬪墠锛岃繖涓被蹇呴』琚垚鍔熷姞杞姐€?/p>

绫荤殑閾炬帴鍖呮嫭楠岃瘉銆佸噯澶囥€佽В鏋?/strong>杩欎笁姝ャ€傚叿浣撴弿杩板涓嬶細

2.1聽 楠岃瘉锛?/strong>

聽聽聽 楠岃瘉鏄敤鏉ョ‘淇滼ava绫荤殑浜岃繘鍒惰〃绀哄湪缁撴瀯涓婃槸鍚﹀畬鍏ㄦ纭紙濡傛枃浠舵牸寮忋€佽娉曡涔夌瓑锛夈€傚鏋滈獙璇佽繃绋嬪嚭閿欑殑璇濓紝浼氭姏鍑簀ava.lang.VertifyError閿欒銆?/p>

涓昏楠岃瘉浠ヤ笅鍐呭锛?/p>

  • 鏂囦欢鏍煎紡楠岃瘉
  • 鍏冩暟鎹獙璇侊細璇箟楠岃瘉
  • 瀛楄妭鐮侀獙璇?/li>

2.2聽 鍑嗗锛?/strong>

銆€銆€鍑嗗杩囩▼鍒欐槸鍒涘缓Java绫讳腑鐨?span style="color: #0000ff;">闈欐€?/strong>

鍩燂紙static淇グ鐨勫唴瀹癸級锛屽苟灏嗚繖浜涘煙鐨勫€艰缃负榛樿鍊?/strong>锛屽悓鏃跺湪鏂规硶鍖轰腑鍒嗛厤鍐呭瓨绌洪棿銆傚噯澶囪繃绋嬪苟涓嶄細鎵ц浠g爜銆?/p>

娉ㄦ剰杩欓噷鏄仛榛樿鍒濆鍖栵紝涓嶆槸鍋氭樉寮忓垵濮嬪寲銆備緥濡傦細

public static int value = 12;

涓婇潰鐨勪唬鐮佷腑锛屽湪鍑嗗闃舵锛屼細缁檝alue鐨勫€艰缃负0锛?span style="color: #0000ff;">榛樿鍒濆鍖?/strong>锛夈€傚湪鍚庨潰鐨?span style="color: #0000ff;">鍒濆鍖栭樁娈?/strong>鎵嶄細缁檝alue鐨勫€艰缃负12锛?span style="color: #0000ff;">鏄惧紡鍒濆鍖?/strong>锛夈€?/p>

2.3聽 瑙f瀽锛?/strong>

銆€銆€瑙f瀽鐨勮繃绋嬪氨鏄‘淇濊繖浜涜寮曠敤鐨勭被鑳借姝g‘鐨勬壘鍒帮紙灏嗙鍙峰紩鐢ㄦ浛鎹负鐩存帴寮曠敤锛夈€傝В鏋愮殑杩囩▼鍙兘浼氬鑷村叾瀹冪殑Java绫昏鍔犺浇銆?/p>

3銆佸垵濮嬪寲锛?/strong>

銆€銆€鍒濆鍖栭樁娈垫槸绫诲姞杞借繃绋嬬殑鏈€鍚庝竴姝ャ€傚埌浜嗗垵濮嬪寲闃舵锛屾墠鐪熸鎵ц绫讳腑瀹氫箟鐨凧ava绋嬪簭浠g爜锛堟垨鑰呰鏄瓧鑺傜爜锛夈€?/p>

鍦ㄤ互涓嬪嚑绉嶆儏鍐典腑锛屼細鎵ц鍒濆鍖栬繃绋嬶細

锛?锛夊垱寤虹被鐨勫疄渚?/p>

锛?锛夎闂被鎴栨帴鍙g殑闈欐€佸彉閲忥紙鐗逛緥锛氬鏋滄槸鐢╯tatic final淇グ鐨勫父閲忥紝閭e氨涓嶄細瀵圭被杩涜鏄惧紡鍒濆鍖?/span>銆俿tatic final 淇敼鐨勫彉閲忓垯浼氬仛鏄惧紡鍒濆鍖?/strong>锛?/p>

锛?锛夎皟鐢ㄧ被鐨勯潤鎬佹柟娉?/p>

锛?锛夊弽灏勶紙Class.forName(packagename.className)锛?/p>

锛?锛夊垵濮嬪寲绫荤殑瀛愮被銆傛敞锛氬瓙绫诲垵濮嬪寲闂锛氭弧瓒充富鍔ㄨ皟鐢紝鍗?span style="color: #0000ff;">鐖剁被璁块棶瀛愮被涓殑闈欐€佸彉閲忋€佹柟娉曪紝瀛愮被鎵嶄細鍒濆鍖?/strong>

锛涘惁鍒欎粎鐖剁被鍒濆鍖栥€?/p>

锛?锛塲ava铏氭嫙鏈哄惎鍔ㄦ椂琚爣鏄庝负鍚姩绫荤殑绫?/p>

浠g爜涓句緥1锛?/strong>

鎴戜滑瀵逛笂闈㈢殑绗紙5锛夌鎯呭喌鍋氫竴涓唬鐮佷妇渚嬨€?/p>

(1)Father.java:

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨
1 public class Father {
2 
3     static {
4         System.out.println("*******father init");
5     }
6     public static int a = 1;
7 }
銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

(2)Son.java:

1 public class Son extends Father {
2     static {
3         System.out.println("*******son init");
4     }
5     public static int b = 2;
6 }

(3)JavaTest.java:

1 public class JavaTest {
2     public static void main(String[] args) {
3         System.out.println(Son.a);
4     }
5 }

涓婇潰鐨勬祴璇曠被涓紝铏界劧鐢ㄤ笂浜哠on杩欎釜绫伙紝浣嗘槸骞舵病鏈夎皟鐢ㄥ瓙绫婚噷鐨勬垚鍛橈紝鎵€浠ュ苟涓嶄細瀵瑰瓙绫昏繘琛屽垵濮嬪寲銆備簬鏄繍琛屾晥鏋滄槸锛?/span>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

濡傛灉鎶奐avaTest.java鏀规垚涓嬮潰杩欎釜鏍峰瓙锛?/p>

1 public class JavaTest {
2     public static void main(String[] args) {
3         System.out.println(Son.a);
4         System.out.println(Son.b);
5     }
6 }

杩愯鏁堟灉锛?/span>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

濡傛灉鎶奐avaTest.java鏀规垚涓嬮潰杩欎釜鏍峰瓙锛?/p>

JavaTest.java:

1 public class JavaTest {
2     public static void main(String[] args) {
3         System.out.println(Son.b);
4     }
5 }

杩愯鏁堟灉锛?/span>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

浠g爜涓句緥2锛?/strong>

鎴戜滑瀵逛笂闈㈢殑绗紙2锛夌鎯呭喌鍋氫竴涓唬鐮佷妇渚嬨€傚嵆锛氬鏋滄槸鐢╯tatic final淇グ鐨勫父閲忥紝鍒欎笉浼氳繘琛屾樉寮忓垵濮嬪寲銆備唬鐮佷妇渚嬪涓嬶細

(1)Father.java:

1 public class Father {
2     static {
3         System.out.println("*******father init");
4     }
5     public static int a = 1;
6 }

(2)Son.java:

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨
1 public class Son extends Father {
2     static {
3         System.out.println("*******son init");
4     }
5 
6     public static int b = 2;
7     public static final int c = 3;
8 }
銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

杩欓噷闈㈢殑鍙橀噺c鏄竴涓潤鎬佸父閲忋€?/span>

(3)JavaTest.java:

1 public class JavaTest {
2     public static void main(String[] args) {
3         System.out.println(Son.c);
4     }
5 }

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涓婇潰鐨勮繍琛屾晥鏋滄樉绀猴紝鐢变簬c鏄痜inal static淇グ鐨勯潤鎬佸父閲忥紝鎵€浠ユ牴鏈氨娌℃湁璋冪敤闈欐€佷唬鐮佸潡閲岄潰鐨勫唴瀹癸紝涔熷氨鏄锛屾病鏈夊杩欎釜绫昏繘琛屾樉寮忓垵濮嬪寲銆?/p>

鐜板湪锛屼繚鎸丗ather.java鐨勪唬鐮佷笉鍙樸€傚皢Son.java浠g爜鍋氬涓嬩慨鏀癸細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨
1 public class Son extends Father {
2     static {
3         System.out.println("*******son init");
4     }
5 
6     public static int b = 2;
7     public static final int c = new Random().nextInt(3);
8 }
銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

JavaTest.java:

1 public class JavaTest {
2     public static void main(String[] args) {
3         System.out.println(Son.c);
4     }
5 }

杩愯鏁堟灉濡備笅锛?/span>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

浠g爜涓句緥3锛氾紙寰堝鏄撳嚭閿欙級

鎴戜滑鏉ヤ笅闈㈣繖娈典唬鐮佺殑杩愯缁撴灉鏄粈涔堬細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨
 1 public class TestInstance {
 2 
 3     public static TestInstance instance = new TestInstance();
 4     public static int a;
 5     public static int b = 0;
 6 
 7     public TestInstance() {
 8         a++;
 9         b++;
10     }
11 
12     public static void main(String[] args) {
13         System.out.println(TestInstance.a);
14         System.out.println(TestInstance.b);
15     }
16 }
銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

杩愯缁撴灉锛?/span>

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涔嬫墍浠ユ湁杩欐牱鐨勮繍琛岀粨鏋滐紝杩欓噷娑夊強鍒扮被鍔犺浇鐨勯『搴忥細

锛?锛夊湪鍔犺浇闃舵锛屽姞杞界被鐨勪俊鎭?/p>

锛?锛夊湪閾炬帴鐨勫噯澶囬樁娈电粰instance銆乤銆乥鍋氶粯璁ゅ垵濮嬪寲骞跺垎閰嶇┖闂达紝姝ゆ椂a鍜宐鐨勫€奸兘涓?

锛?锛夊湪鍒濆鍖栭樁娈碉紝鎵ц鏋勯€犳柟娉曪紝姝ゆ椂a鍜宐鐨勫€奸兘涓?

锛?锛夊湪鍒濆鍖栭樁娈碉紝缁欓潤鎬佸彉閲忓仛鏄惧紡鍒濆鍖栵紝姝ゆ椂b鐨勫€间负0

鎴戜滑鏀逛竴涓嬩唬鐮佺殑鎵ц椤哄簭锛屾敼鎴愪笅闈㈣繖涓牱瀛愶細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨
 1 public class TestInstance {
 2 
 3     public static int a;
 4     public static int b = 0;
 5     public static TestInstance instance = new TestInstance();
 6 
 7     public TestInstance() {
 8         a++;
 9         b++;
10     }
11 
12     public static void main(String[] args) {
13         System.out.println(TestInstance.a);
14         System.out.println(TestInstance.b);
15 
16     }
17 }
銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

杩愯鏁堟灉鏄細

銆愯浆銆慗ava铏氭嫙鏈鸿瑙?JVM甯歌闂鎬荤粨

涔嬫墍浠ユ湁杩欐牱鐨勮繍琛岀粨鏋滐紝杩欓噷娑夊強鍒扮被鍔犺浇鐨勯『搴忥細

锛?锛夊湪鍔犺浇闃舵锛屽姞杞界被鐨勪俊鎭?/p>

锛?锛夊湪閾炬帴鐨勫噯澶囬樁娈电粰instance銆乤銆乥鍋氶粯璁ゅ垵濮嬪寲骞跺垎閰嶇┖闂达紝姝ゆ椂a鍜宐鐨勫€奸兘涓?

锛?锛夊湪鍒濆鍖栭樁娈碉紝缁欓潤鎬佸彉閲忓仛鏄惧紡鍒濆鍖栵紝姝ゆ椂b鐨勫€间粛涓?

锛?锛夊湪鍒濆鍖栭樁娈碉紝鎵ц鏋勯€犳柟娉曪紝姝ゆ椂a鍜宐鐨勫€奸兘涓?

娉ㄦ剰锛岃繖閲屾秹鍙婂埌鍙﹀涓€涓被浼肩殑鐭ヨ瘑鐐逛笉瑕佹悶娣蜂簡銆傜煡璇嗙偣濡備笅銆?/p>

鐭ヨ瘑鐐癸細绫荤殑鍒濆鍖栬繃绋嬶紙閲嶈锛?/strong>

Student s = new Student();鍦ㄥ唴瀛樹腑鍋氫簡鍝簺浜嬫儏?

  • 鍔犺浇Student.class鏂囦欢杩涘唴瀛?/li>
  • 鍦?span style="color: #0000ff;">鏍堝唴瀛?/strong>涓簊寮€杈熺┖闂?/li>
  • 鍦?span style="color: #0000ff;">鍫嗗唴瀛?/strong>涓哄鐢熷璞″紑杈熺┖闂?/li>
  • 瀵瑰鐢熷璞$殑鎴愬憳鍙橀噺杩涜榛樿鍒濆鍖?/strong>
  • 瀵瑰鐢熷璞$殑鎴愬憳鍙橀噺杩涜鏄剧ず鍒濆鍖?/strong>
  • 閫氳繃鏋勯€犳柟娉?/strong>瀵瑰鐢熷璞$殑鎴愬憳鍙橀噺璧嬪€?/strong>
  • 瀛︾敓瀵硅薄鍒濆鍖栧畬姣曪紝鎶?span style="color: #0000ff;">瀵硅薄鍦板潃璧嬪€肩粰s鍙橀噺