鍖哄垎 JVM 鍐呭瓨缁撴瀯銆?Java 鍐呭瓨妯″瀷 浠ュ強 Java 瀵硅薄妯″瀷 涓変釜姒傚康

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鍖哄垎 JVM 鍐呭瓨缁撴瀯銆?Java 鍐呭瓨妯″瀷 浠ュ強 Java 瀵硅薄妯″瀷 涓変釜姒傚康相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/%e6%96%b9%e6%b3%95%e5%8c%ba' title='鏂规硶鍖?>鏂规硶鍖?/a>   href   灏辨槸   sync   瀵硅薄妯″瀷   杩涚▼   杩囩▼   姒傚康   

鏈枃鐢?绠€鎮?SimpRead 杞爜锛?鍘熸枃鍦板潃 https://www.toutiao.com/i6732361325244056072/

浣滆€咃細Hollis 
鏉ユ簮锛氬叕浼楀彿Hollis 

Java 浣滀负涓€绉嶉潰鍚戝璞$殑锛岃法骞冲彴璇█锛屽叾瀵硅薄銆佸唴瀛樼瓑涓€鐩存槸姣旇緝闅剧殑鐭ヨ瘑鐐广€傝€屼笖寰堝姒傚康鐨勫悕绉扮湅璧锋潵鍙堥偅涔堢浉浼硷紝寰堝浜轰細鍌诲偦鍒嗕笉娓呮銆傛瘮濡傛湰鏂囨垜浠璁ㄨ鐨?JVM 鍐呭瓨缁撴瀯銆?strong>Java 鍐呭瓨妯″瀷鍜?Java 瀵硅薄妯″瀷锛岃繖灏辨槸涓変釜鎴劧涓嶅悓鐨勬蹇碉紝浣嗘槸寰堝浜哄鏄撳紕娣枫€?/p>

鍙互杩欐牱璇达紝寰堝楂樼骇寮€鍙戠敋鑷抽兘鎼炰笉涓嶆竻妤?JVM 鍐呭瓨缁撴瀯銆丣ava 鍐呭瓨妯″瀷鍜?Java 瀵硅薄妯″瀷杩欎笁鑰呯殑姒傚康鍙婂叾闂寸殑鍖哄埆銆傜敋鑷虫垜瑙佽繃鏈変簺闈㈣瘯瀹樿嚜宸变篃鎼炵殑涓嶆槸澶竻妤氥€備笉淇$殑璇濓紝浣犲幓缃戜笂鎼滅储 Java 鍐呭瓨妯″瀷锛岃繕浼氭湁寰堝鏂囩珷鐨勫唴瀹瑰叾瀹炰粙缁嶇殑鏄?JVM 鍐呭瓨缁撴瀯銆?/p>

棣栧厛锛岃繖涓変釜姒傚康鏄畬鍏ㄤ笉鍚岀殑涓変釜姒傚康銆?strong>鏈枃涓昏瀵硅繖涓変釜姒傚康鍔犱互鍖哄垎浠ュ強绠€鍗曚粙缁嶃€傚叾涓瘡涓€涓煡璇嗙偣閮藉彲浠ュ崟鐙啓涓€绡囨枃绔狅紝鏈枃骞朵笉浼氭繁鍏ヤ粙缁嶏紝鎰熷叴瓒g殑鏈嬪弸鍙互鍔犲叆鎴戠殑鐭ヨ瘑鏄熺悆鍜岀悆鍙嬩滑鍏卞悓瀛︿範銆?/strong>

鎶€鏈浘鐗? src=

JVM 鍐呭瓨缁撴瀯

鎶€鏈浘鐗? src=

鎴戜滑閮界煡閬擄紝Java 浠g爜鏄杩愯鍦ㄨ櫄鎷熸満涓婄殑锛岃€岃櫄鎷熸満鍦ㄦ墽琛?Java 绋嬪簭鐨勮繃绋嬩腑浼氭妸鎵€绠$悊鐨勫唴瀛樺垝鍒嗕负鑻ュ共涓笉鍚岀殑鏁版嵁鍖哄煙锛岃繖浜涘尯鍩熼兘鏈夊悇鑷殑鐢ㄩ€斻€?/p>

鍏朵腑鏈変簺鍖哄煙闅忕潃铏氭嫙鏈鸿繘绋嬬殑鍚姩鑰屽瓨鍦紝鑰屾湁浜涘尯鍩熷垯渚濊禆鐢ㄦ埛绾跨▼鐨勫惎鍔ㄥ拰缁撴潫鑰屽缓绔嬪拰閿€姣併€傚湪銆奐ava 铏氭嫙鏈鸿鑼冿紙Java SE 8锛夈€嬩腑鎻忚堪浜?JVM 杩愯鏃跺唴瀛樺尯鍩熺粨鏋勫涓嬶細

鎶€鏈浘鐗? src=

鍚勪釜鍖哄煙鐨勫姛鑳戒笉鏄湰鏂囬噸鐐癸紝灏变笉鍦ㄨ繖閲岃缁嗕粙缁嶄簡銆傝繖閲岀畝鍗曟彁鍑犱釜闇€瑕佺壒鍒敞鎰忕殑鐐癸細

1銆佷互涓婃槸 Java 铏氭嫙鏈鸿鑼冿紝涓嶅悓鐨勮櫄鎷熸満瀹炵幇浼氬悇鏈変笉鍚岋紝浣嗘槸涓€鑸細閬靛畧瑙勮寖銆?/p>

2銆佽鑼冧腑瀹氫箟鐨勬柟娉曞尯锛屽彧鏄竴绉嶆蹇典笂鐨勫尯鍩燂紝骞惰鏄庝簡鍏跺簲璇ュ叿鏈変粈涔堝姛鑳姐€備絾鏄苟娌℃湁瑙勫畾杩欎釜鍖哄煙鍒板簳搴旇澶勪簬浣曞銆傛墍浠ワ紝瀵逛簬涓嶅悓鐨勮櫄鎷熸満瀹炵幇鏉ヨ锛屾槸鏈変竴瀹氱殑鑷敱搴︾殑銆?/p>

3銆佷笉鍚岀増鏈殑鏂规硶鍖烘墍澶勪綅缃笉鍚岋紝涓婂浘涓垝鍒嗙殑鏄€昏緫鍖哄煙锛屽苟涓嶆槸缁濆鎰忎箟涓婄殑鐗╃悊鍖哄煙銆傚洜涓烘煇浜涚増鏈殑 JDK 涓柟娉曞尯鍏跺疄鏄湪鍫嗕腑瀹炵幇鐨勩€?/p>

4銆佽繍琛屾椂甯搁噺姹犵敤浜庡瓨鏀剧紪璇戞湡鐢熸垚鐨勫悇绉嶅瓧闈㈤噺鍜岀鍙峰簲鐢ㄣ€備絾鏄紝Java 璇█骞朵笉瑕佹眰甯搁噺鍙湁鍦ㄧ紪璇戞湡鎵嶈兘浜х敓銆傛瘮濡傚湪杩愯鏈燂紝String.intern 涔熶細鎶婃柊鐨勫父閲忔斁鍏ユ睜涓€?/p>

5銆侀櫎浜嗕互涓婁粙缁嶇殑 JVM 杩愯鏃跺唴瀛樺锛岃繕鏈変竴鍧楀唴瀛樺尯鍩熷彲渚涗娇鐢紝閭e氨鏄洿鎺ュ唴瀛樸€侸ava 铏氭嫙鏈鸿鑼冨苟娌℃湁瀹氫箟杩欏潡鍐呭瓨鍖哄煙锛屾墍浠ヤ粬骞朵笉鐢?JVM 绠$悊锛屾槸鍒╃敤鏈湴鏂规硶搴撶洿鎺ュ湪鍫嗗鐢宠鐨勫唴瀛樺尯鍩熴€?/p>

6銆佸爢鍜屾爤鐨勬暟鎹垝鍒嗕篃涓嶆槸缁濆鐨勶紝濡?HotSpot 鐨?JIT 浼氶拡瀵瑰璞″垎閰嶅仛鐩稿簲鐨勪紭鍖栥€?/p>

濡備笂锛屽仛涓€荤粨锛孞VM 鍐呭瓨缁撴瀯锛岀敱 Java 铏氭嫙鏈鸿鑼冨畾涔夈€傛弿杩扮殑鏄?Java 绋嬪簭鎵ц杩囩▼涓紝鐢?JVM 绠$悊鐨勪笉鍚屾暟鎹尯鍩熴€傚悇涓尯鍩熸湁鍏剁壒瀹氱殑鍔熻兘銆?/p>

鎶€鏈浘鐗? src=

Java 鍐呭瓨妯″瀷

鎶€鏈浘鐗? src=

Java 鍐呭瓨妯″瀷鐪嬩笂鍘诲拰 Java 鍐呭瓨缁撴瀯锛圝VM 鍐呭瓨缁撴瀯锛夊樊涓嶅锛屽緢澶氫汉浼氳浠ヤ负涓よ€呮槸涓€鍥炰簨鍎匡紝杩欎篃灏卞鑷撮潰璇曡繃绋嬩腑缁忓父绛旈潪鎵€涓恒€?/p>

鍦ㄥ墠闈㈢殑鍏充簬 JVM 鐨勫唴瀛樼粨鏋勭殑鍥句腑锛屾垜浠彲浠ョ湅鍒帮紝鍏朵腑 Java 鍫嗗拰鏂规硶鍖虹殑鍖哄煙鏄涓嚎绋嬪叡浜殑鏁版嵁鍖哄煙銆備篃灏辨槸璇达紝澶氫釜绾跨▼鍙兘鍙互鎿嶄綔淇濆瓨鍦ㄥ爢鎴栬€呮柟娉曞尯涓殑鍚屼竴涓暟鎹€傝繖涔熷氨鏄垜浠父璇寸殑 鈥淛ava 鐨勭嚎绋嬮棿閫氳繃鍏变韩鍐呭瓨杩涜閫氫俊鈥濄€?/p>

Java 鍐呭瓨妯″瀷鏄牴鎹嫳鏂?Java Memory Model锛圝MM锛夌炕璇戣繃鏉ョ殑銆傚叾瀹?JMM 骞朵笉鍍?JVM 鍐呭瓨缁撴瀯涓€鏍锋槸鐪熷疄瀛樺湪鐨勩€備粬鍙槸涓€涓娊璞$殑姒傚康銆侸SR-133: Java Memory Model and Thread Specification 涓弿杩颁簡锛孞MM 鏄拰澶氱嚎绋嬬浉鍏崇殑锛屼粬鎻忚堪浜嗕竴缁勮鍒欐垨瑙勮寖锛岃繖涓鑼冨畾涔変簡涓€涓嚎绋嬪鍏变韩鍙橀噺鐨勫啓鍏ユ椂瀵瑰彟涓€涓嚎绋嬫槸鍙鐨勩€?/p>

閭d箞锛岀畝鍗曟€荤粨涓嬶紝Java 鐨勫绾跨▼涔嬮棿鏄€氳繃鍏变韩鍐呭瓨杩涜閫氫俊鐨勶紝鑰岀敱浜庨噰鐢ㄥ叡浜唴瀛樿繘琛岄€氫俊锛屽湪閫氫俊杩囩▼涓細瀛樺湪涓€绯诲垪濡傚彲瑙佹€с€佸師瀛愭€с€侀『搴忔€х瓑闂锛岃€?JMM 灏辨槸鍥寸粫鐫€澶氱嚎绋嬮€氫俊浠ュ強涓庡叾鐩稿叧鐨勪竴绯诲垪鐗规€ц€屽缓绔嬬殑妯″瀷銆侸MM 瀹氫箟浜嗕竴浜涜娉曢泦锛岃繖浜涜娉曢泦鏄犲皠鍒?Java 璇█涓氨鏄?volatile銆乻ynchronized 绛夊叧閿瓧銆?/p>

鍦?JMM 涓紝鎴戜滑鎶婂涓嚎绋嬮棿閫氫俊鐨勫叡浜唴瀛樼О涔嬩负涓诲唴瀛橈紝鑰屽湪骞跺彂缂栫▼涓涓嚎绋嬮兘缁存姢浜嗕竴涓嚜宸辩殑鏈湴鍐呭瓨锛堣繖鏄釜鎶借薄姒傚康锛夛紝鍏朵腑淇濆瓨鐨勬暟鎹槸涓诲唴瀛樹腑鐨勬暟鎹嫹璐濄€傝€?JMM 涓昏鏄帶鍒舵湰鍦板唴瀛樺拰涓诲唴瀛樹箣闂寸殑鏁版嵁浜や簰鐨勩€?/p>

鎶€鏈浘鐗? src=

鍦?Java 涓紝JMM 鏄竴涓潪甯搁噸瑕佺殑姒傚康锛屾鏄敱浜庢湁浜?JMM锛孞ava 鐨勫苟鍙戠紪绋嬫墠鑳介伩鍏嶅緢澶氶棶棰樸€傝繖閲屽氨涓嶅 Java 鍐呭瓨妯″瀷鍋氭洿鍔犺缁嗙殑浠嬬粛浜嗭紝鎯充簡瑙f洿澶氱殑鏈嬪弸鍙互鍙傝€冦€奐ava 骞跺彂缂栫▼鐨勮壓鏈€嬨€?/p>

鎶€鏈浘鐗? src=

Java 瀵硅薄妯″瀷

鎶€鏈浘鐗? src=

Java 鏄竴绉嶉潰鍚戝璞$殑璇█锛岃€?Java 瀵硅薄鍦?JVM 涓殑瀛樺偍涔熸槸鏈変竴瀹氱殑缁撴瀯鐨勩€傝€岃繖涓叧浜?Java 瀵硅薄鑷韩鐨勫瓨鍌ㄦā鍨嬬О涔嬩负 Java 瀵硅薄妯″瀷銆?/p>

HotSpot 铏氭嫙鏈轰腑锛岃璁′簡涓€涓?OOP-Klass Model銆侽OP锛圤rdinary Object Pointer锛夋寚鐨勬槸鏅€氬璞℃寚閽堬紝鑰?Klass 鐢ㄦ潵鎻忚堪瀵硅薄瀹炰緥鐨勫叿浣撶被鍨嬨€?/p>

姣忎竴涓?Java 绫伙紝鍦ㄨ JVM 鍔犺浇鐨勬椂鍊欙紝JVM 浼氱粰杩欎釜绫诲垱寤轰竴涓?instanceKlass锛屼繚瀛樺湪鏂规硶鍖猴紝鐢ㄦ潵鍦?JVM 灞傝〃绀鸿 Java 绫汇€傚綋鎴戜滑鍦?Java 浠g爜涓紝浣跨敤 new 鍒涘缓涓€涓璞$殑鏃跺€欙紝JVM 浼氬垱寤轰竴涓?instanceOopDesc 瀵硅薄锛岃繖涓璞′腑鍖呭惈浜嗗璞″ご浠ュ強瀹炰緥鏁版嵁銆?/p>

鎶€鏈浘鐗? src=

杩欏氨鏄竴涓畝鍗曠殑 Java 瀵硅薄鐨?OOP-Klass 妯″瀷锛屽嵆 Java 瀵硅薄妯″瀷銆?/p>

鎶€鏈浘鐗? src=

鎬荤粨

鎶€鏈浘鐗? src=

鎴戜滑鍐嶆潵鍖哄垎涓?JVM 鍐呭瓨缁撴瀯銆?Java 鍐呭瓨妯″瀷 浠ュ強 Java 瀵硅薄妯″瀷 涓変釜姒傚康銆?/p>

JVM 鍐呭瓨缁撴瀯锛屽拰 Java 铏氭嫙鏈虹殑杩愯鏃跺尯鍩熸湁鍏炽€?/strong>

Java 鍐呭瓨妯″瀷锛屽拰 Java 鐨勫苟鍙戠紪绋嬫湁鍏炽€?/strong>

Java 瀵硅薄妯″瀷锛屽拰 Java 瀵硅薄鍦ㄨ櫄鎷熸満涓殑琛ㄧ幇褰㈠紡鏈夊叧銆?/strong>

鍏充簬杩欎笁閮ㄥ垎鍐呭锛屾湰鏂囧苟鏈垎鍒睍寮€锛屽洜涓烘秹鍙婂埌鐨勭煡璇嗙偣瀹炲湪澶锛屽鏋滆鑰呮劅鍏磋叮锛屽彲浠ヨ嚜琛屽涔犮€傚悗闈篃浼氬彂鏂囦粙缁嶈繖浜涘唴瀹癸紝鏁鏈熷緟銆?/p>

鏈€鍚庯紝杩欎笁涓蹇甸潪甯搁噸瑕侊紝涓€瀹氳涓ユ牸鍖哄垎寮€锛屽崈涓囦笉瑕佸湪闈㈣瘯涓嚭鐜扮瓟闈炴墍涓虹殑鎯呭喌銆?/strong>

以上是关于鍖哄垎 JVM 鍐呭瓨缁撴瀯銆?Java 鍐呭瓨妯″瀷 浠ュ強 Java 瀵硅薄妯″瀷 涓変釜姒傚康的主要内容,如果未能解决你的问题,请参考以下文章

銆岀25璁层€?璋堣皥 JVM 鍐呭瓨鍖哄煙鍒掑垎锛屽摢浜涘尯鍩熷彲鑳藉彂鐢?OutOfMemoryError?|瀛︿範绗旇

[STL] 绠€鍗曟竻闄ap瀵硅薄鎵€鍗犵敤鍐呭瓨

鐩稿鍐呭瓨鐨勬枃浠舵搷浣滃瓧鑺傛祦

妫€鏌ョ郴缁熺鐩樺拰鍐呭瓨浣跨敤鎯呭喌

Android浣跨敤娉ㄨВ浠f浛鏋氫妇浠庤€岃妭鐪佺郴缁熶娇鐢ㄧ殑鍐呭瓨寮€閿€

Objective-C 鍐呭瓨绠$悊娴呮瀽涓庡惊鐜己寮曠敤涓句緥

(c)2006-2024 SYSTEM All Rights Reserved IT常识