当前位置: 首页 > 后端技术 > Java

JVM系列(四)一目了然的对象内存布局

时间:2023-04-02 09:51:38 Java

璇风偣璧炲叧娉紝浣犱滑鐨勬敮鎸佸鎴戞潵璇存剰涔夐噸澶с€傪煍ュぇ瀹跺ソ锛屾垜鏄皬楣忋€傛湰鏂囧凡鏀跺綍浜嶨itHub路AndroidFamily銆傝繖閲屾湁涓€濂桝ndroid杩涢樁鎴愰暱鐭ヨ瘑浣撶郴锛屽織鍚岄亾鍚堢殑灏忎紮浼翠滑锛屽叧娉ㄥ叕浼楀彿銆愬江鏃澘銆戯紝鍔╀綘鎵撻€犳牳蹇冪珵浜夊姏銆傚墠瑷€Java涓竾鐗╃殕瀵硅薄锛屽璞′篃鏄疛ava缂栫▼涓渶甯搁亣鍒扮殑姒傚康銆傛繁鍏ョ悊瑙ava瀵硅薄鍙互甯姪鎴戜滑鏇村ソ鍦版帉鎻ava鎶€鏈爤銆傚湪杩欑瘒鏂囩珷涓紝鎴戜滑灏嗕粠鍐呭瓨鐨勮搴︼紝甯﹀ぇ瀹舵繁鍏ヤ簡瑙ava瀵硅薄鍦ㄨ櫄鎷熸満涓殑琛ㄧ幇褰㈠紡銆傚涔犺矾绾垮浘锛?.瀵硅薄鍒嗛厤鍒板摢閲岋紵鍦↗ava铏氭嫙鏈轰腑锛孞ava鍫嗗拰鏂规硶鍖烘槸鍒嗛厤瀵硅薄鐨勪富瑕佸尯鍩燂紝浣嗕篃鏈変竴浜涚壒娈婃儏鍐碉紝濡俆LAB銆佹爤涓婂垎閰嶃€佹爣閲忔浛鎹㈢瓑銆傝繖浜涚壒娈婃儏鍐电殑瀛樺湪鏄竴涓櫄鎷熸満閲囩敤鐨勭壒娈婄瓥鐣ヨ繘涓€姝ヤ紭鍖栧璞″垎閰嶅拰鍥炴敹鏁堢巼锛屽彲浠ヤ綔涓虹煡璇嗗偍澶囥€?銆丣ava鍫嗭紙Heap锛夛細Java鍫嗘槸澶у鏁板璞$殑鍒嗛厤鍖恒€傜幇浠h櫄鎷熸満閲囩敤鍒嗕唬鏀堕泦绛栫暐锛屽洜姝ava鍫嗗垎涓烘柊鐢熶唬銆佽€佸勾浠e拰姘镐箙浠c€傚鏋滄柊鐢熶唬閲囩敤澶嶅埗绠楁硶锛屽垯鍙互鍒嗕负Eden鍖恒€丗romSurvivor鍖哄拰ToSurvivor鍖恒€傞櫎浜嗚繖浜涙瘡涓嚎绋嬮兘鍙互鍒嗛厤瀵硅薄鐨勫尯鍩熶箣澶栵紝濡傛灉铏氭嫙鏈哄惎鐢ㄤ簡TLAB绛栫暐锛岄偅涔堣櫄鎷熸満浼氬湪鍫嗕腑涓烘瘡涓嚎绋嬮鍏堝垎閰嶄竴灏忓潡鍐呭瓨锛岀О涓虹嚎绋嬫湰鍦板垎閰嶇紦鍐插尯锛圱hreadLocal鍒嗛厤缂撳啿鍖猴紝TLAB锛夈€傚湪TLAB涓婂垎閰嶅璞′笉闇€瑕佸悓姝ラ攣锛屽彲浠ュ姞蹇璞″垎閰嶉€熷害锛圱LAB涓殑瀵硅薄浠嶇劧琚嚎绋嬪叡浜拰璇诲彇锛屼絾涓嶅厑璁稿叾浠栫嚎绋嬪湪璇ュ尯鍩熷垎閰嶅璞★級锛?.鏂规硶鍖猴細鏂规硶鍖轰篃鏄嚎绋嬪叡浜殑鍖哄煙銆傜敓鍛藉懆鏈熺煭鐨勫璞″瓨鏀惧湪鍫嗕腑锛岃€岀敓鍛藉懆鏈熼暱鐨勫璞″瓨鏀惧湪鏂规硶鍖猴紝閫氬父鏄敮鎸佽櫄鎷熸満鎵ц鎵€蹇呴渶鐨勫璞°€傝繖涓や釜瀵硅薄鏄垎寮€瀛樺偍鐨勩€備綋鐜颁簡鍔ㄩ潤鍒嗙鐨勬€濇兂锛屾湁鍒╀簬鍐呭瓨绠$悊銆傛柟娉曞尯瀛樺偍鐨勬暟鎹寘鎷姞杞界殑Class瀵硅薄銆侀潤鎬佸瓧娈碉紙鏈川涓婃槸Class瀵硅薄涓殑瀹炰緥瀛楁锛屼笅闈細瑙i噴锛夈€佸父閲忔睜锛堝String.intern()锛夈€佸嵆鏃剁紪璇戜唬鐮佺瓑銆?3銆佹爤鍒嗛厤锛氬鏋淛ava铏氭嫙鏈洪€氳繃閫冮€稿垎鏋愬垽鏂竴涓璞$殑鐢熷懡鍛ㄦ湡涓嶄細閫冨嚭鏂规硶锛屽垯鍙互閫夋嫨鐩存帴鍦ㄦ爤涓婂垎閰嶅璞★紝鑰屼笉鏄湪鍫嗕笂鍒嗛厤銆傛爤涓婂垎閰嶇殑瀵硅薄浼氶殢鐫€鏍堝抚鍑烘爤鑰岄攢姣侊紝涓嶉渶瑕佽繘琛屽瀮鍦惧洖鏀讹紝鍙互鍑忚交鍨冨溇鍥炴敹鍣ㄧ殑鍘嬪姏銆?.鏍囬噺鏇挎崲锛氬湪鏍堜笂鍒嗛厤绛栫暐鐨勫熀纭€涓婏紝铏氭嫙鏈鸿繕鍙互閫夋嫨灏嗗璞″垎瑙d负澶氫釜灞€閮ㄥ彉閲忥紝鍦ㄦ爤涓婂垎閰嶏紝鐢氳嚦涓嶉渶瑕佸垱寤哄璞°€?銆佸璞¤闂拰瀹氫綅Java绫诲瀷鍒嗕负鍩烘湰鏁版嵁绫诲瀷锛坕nt绛夛級鍜屽紩鐢ㄧ被鍨嬶紙Reference锛夈€傚湴鍧€涓嶄唬琛ㄥ璞℃暟鎹€傞偅涔堬紝铏氭嫙鏈烘槸濡備綍閫氳繃寮曠敤瀹氫綅鍒板疄闄呭璞℃暟鎹殑鍛紵鍏蜂綋鐨勮闂畾浣嶆柟寮忓彇鍐充簬铏氭嫙鏈虹殑瀹炵幇銆傜洰鍓嶄富娴佺殑鏂规硶鏈変袱绉嶏細1.鐩存帴鎸囬拡璁块棶锛氬紩鐢ㄦ寔鏈夋寚鍚戝璞℃暟鎹殑鐩存帴鎸囬拡锛岄€氳繃瀹冨彲浠ョ洿鎺ヨ闂璞℃暟鎹€傝繖鏍峰氨闇€瑕佸湪瀵硅薄鏁版嵁涓娇鐢ㄤ竴涓澶栫殑鎸囬拡鎸囧悜瀵硅薄绫诲瀷鏁版嵁锛?銆佸彞鏌勮闂細寮曠敤閲岄潰鎸佹湁涓€涓彞鏌勶紝鍙ユ焺鎸佹湁鎸囧悜閲岄潰瀵硅薄鏁版嵁鍜岀被鍨嬫暟鎹殑鎸囬拡锛堝彞鏌勪綅浜嶫ava鍫嗕腑鐨勫彞鏌勬睜涓級銆傝繖鏍峰氨涓嶉渶瑕佸湪瀵硅薄鏁版嵁涓褰曞璞$被鍨嬫暟鎹殑鎸囬拡浜嗐€備娇鐢ㄥ彞鏌勭殑濂藉鏄綋瀵硅薄鍦ㄥ瀮鍦惧洖鏀舵椂绉诲姩瀛樺偍鍖烘椂锛岃櫄鎷熸満鍙渶瑕佹敼鍙樺彞鏌勪腑鐨勬寚閽堬紝鑰屽紩鐢ㄤ繚鎸佺ǔ瀹氥€備娇鐢ㄧ洿鎺ユ寚閽堢殑濂藉鏄彧闇€瑕佷竴娆℃寚閽堣烦杞氨鍙互璁块棶鍒板璞℃暟鎹紝璁块棶閫熷害鐩稿鏉ヨ姣旇緝蹇€係unHotSpot铏氭嫙鏈轰娇鐢ㄧ殑鏄洿鎺ユ寚閽堟柟寮忥紝鑰孉ndroidART铏氭嫙鏈轰娇鐢ㄧ殑鏄痟andle鏂瑰紡銆俬andle.h//AndroidART铏氭嫙鏈烘簮浠g爜瀹炴柦渚嬶細//鍙ユ焺鏄寘鍚獹C鏍圭殑鍐呭瓨浣嶇疆銆傜敱浜庡彞鏌勪腑鐨刴irror::Object*s//GC鍙锛屽洜姝C鍙兘浼氱Щ鍔ㄥ叾涓殑寮曠敤锛岃繖鏄娇鐢╳rap鎸囬拡鏃犳硶瀹屾垚鐨勪簨鎯呫€傚彞鏌勯€氬父鍦℉andleScopes涓垎閰嶃€侶andle鏄疢utableHandle鐨勮秴绫?/锛屼笉鏀寔璧嬪€兼搷浣溿€傛ā鏉?classT>classHandle:publicValueObject{...}鐩存帴鎸囬拡璁块棶锛氬彞鏌勮闂細瀵笿ava寮曠敤绫诲瀷鐨勬繁鍏ュ垎鏋愶紝鍙傝寮曠敤绫诲瀷3.浣跨敤JOL鍒嗘瀽瀵硅薄鍐呭瓨甯冨眬鏈妭鎴戜滑婕旂ず浣跨敤JOL锛圝avaObjectLayout锛夎繘琛屽垎鏋怞ava瀵硅薄鐨勫唴瀛樺竷灞€銆侸OL鏄疧penJDK鎻愪緵鐨勫璞″唴瀛樺竷灞€鍒嗘瀽宸ュ叿锛屼絾鍙敮鎸丠otSpot/OpenJDK铏氭嫙鏈猴紝鍦ㄥ叾浠栬櫄鎷熸満涓婁娇鐢ㄤ細鎶ラ敊锛歟rrorlogjava.lang.IllegalStateException:OnlyHotSpot/OpenJDKVMsaresupported3銆?鐜板湪浣跨敤姝ラ锛屾垜浠娇鐢↗OL鏉ュ垎鏋恘ewObject()鍦℉otSpot铏氭嫙鏈轰笂鐨勫唴瀛樺竷灞€銆傛ā鏉跨▼搴忓涓嬶細绀轰緥绋嬪簭//Step1:娣诲姞渚濊禆瀹炵幇'org.openjdk.jol:jol-core:0.11'//Step2:鍒涘缓瀵硅薄Objectobj=newObject();//Step3:鎵撳嵃瀵硅薄鍐呭瓨甯冨眬//1.杈撳嚭铏氭嫙鏈哄拰瀵硅薄鍐呭瓨甯冨眬淇℃伅System.out.println(VM.current().details());//2.杈撳嚭瀵硅薄鍐呭瓨甯冨眬淇℃伅System.out.println(ClassLayout.parseInstance(obj).toPrintable());杈撳嚭鏃ュ織#杩愯64浣岺otSpotVM銆?浣跨敤甯?浣嶇Щ浣嶇殑鍘嬬缉oop銆?浣跨敤甯?浣嶇Щ浣嶇殑鍘嬬缉klass銆?瀵硅薄鎸?瀛楄妭瀵归綈銆?鎸夌被鍨嬪垝鍒嗙殑瀛楁澶у皬锛?銆?銆?銆?,2,4,4,8,8[bytes]#鏁扮粍鍏冪礌澶у皬锛?,1,1,2,2,4,4,8,8[bytes]java.lang.Objectobjectinternals:OFFSETSIZETYPEDESCRIPTIONVALUE04锛堝璞″ご锛?1000000锛?0000001000000000000000000000000锛夛紙1锛?4锛堝璞″ご锛?0000000锛?0000000000000000000000000000000)(0)84(objectheader)e50100f8(11100101000000010000000011111000)(-134217243)124(鐢变簬涓嬩竴涓璞″榻愯€屼涪澶?瀹炰緥澶у皬:16bytesSpacelosses:4bytesbytesexternal=4bytestotal鏈夊叧铏氭嫙鏈虹殑淇℃伅锛氳繍琛?4浣岺otSpotVM銆傝〃绀哄湪64浣嶄笂杩愯鐨凥otSpot铏氭嫙鏈猴紱浣跨敤甯?浣嶇Щ浣嶇殑鍘嬬缉oop銆傛寚閽堝帇缂╋紙绋嶅悗瑙i噴锛夛紱浣跨敤鍏锋湁3浣嶇Щ浣嶇殑鍘嬬缉绫汇€傛寚閽堝帇缂╋紙绋嶅悗瑙i噴锛夛紱瀵硅薄鏄?瀛楄妭瀵归綈鐨勩€傝〃绀哄璞℃寜8瀛楄妭瀵归綈锛堢◢鍚庤В閲婏級锛汧ieldsizesbytype:4,1,1,2,2,4,4,8,8[bytes]锛氳〃绀哄紩鐢ㄥ崰鐢ㄧ殑闀垮害锛宐oolean,byte,char,short,int,float,long,double渚濇;Arrayelementsizes:4,1,1,2,2,4,4,8,8[bytes]:渚濇琛ㄧず鏁扮粍鍏冪礌鐨勯暱搴︽垜灏咼ava瀵硅薄鐨勫唴瀛樺竷灞€褰掔撼涓轰互涓嬪熀鏈ā鍨嬶細3.2瀵硅薄鍐呭瓨甯冨眬鐨勫熀鏈ā鍨嬪湪Java铏氭嫙鏈轰腑锛屼竴涓璞$殑鍐呭瓨甯冨眬涓昏鐢?閮ㄥ垎缁勬垚锛?.瀵硅薄澶达紙Header锛夛細鍖呮嫭瀵硅薄鐨勮繍琛岀姸鎬佷俊鎭爣璁板伐浣滃拰绫诲瀷鎸囬拡锛堢洿鎺ユ寚閽堣闂柟娉曪級锛屾暟鎹璞′篃浼氳褰曟暟缁勫厓绱犵殑鏁伴噺锛?銆佸疄渚嬫暟鎹紙InstanceData锛夛細鏅€氬璞$殑瀹炰緥鏁版嵁鍖呮嫭褰撳墠绫诲0鏄庣殑瀹炰緥瀛楁鍜岀埗绫诲0鏄庣殑瀹炰緥瀛楁锛岃€孋lass瀵硅薄鐨勫疄渚嬫暟鎹寘鎷潤鎬佸瓧娈靛拰鏂规硶琛ㄧ敱褰撳墠绫诲0鏄庯紱3.Padding锛欻otSpot铏氭嫙鏈哄璞$殑澶у皬蹇呴』鎸?瀛楄妭瀵归綈銆傚鏋滃璞″疄闄呭崰鐢ㄧ殑绌洪棿灏忎簬8bytes鐨勫€嶆暟锛屽垯浼氬湪瀵硅薄鏈熬娣诲姞瀵归綈濉厖銆傚浜庢柟娉曡〃鐨勪綔鐢紝璇峰弬瑙侀噸杞藉拰瑕嗙洊銆?.瀵硅薄鍐呭瓨甯冨眬璇﹁В浠庢湰鑺傚紑濮嬶紝鎴戜滑璇︾粏璁茶В瀵硅薄鍐呭瓨甯冨眬鐨勬ā鍨嬨€?.1瀵硅薄澶达紙Header锛?*MarkWork锛歁arkWork鏄璞$殑杩愯鏃剁姸鎬佷俊鎭紝鍖呮嫭hashcode銆乬enerationalage銆乴ockstatus銆乥iasedlock淇℃伅绛夈€傜敱浜嶮arkWork鏄澶栫殑瀛樺偍鎴愭湰锛屼笌瀵逛簬瀵硅薄瀹炰緥鏁版嵁锛岃櫄鎷熸満閫夋嫨灏嗗叾璁捐涓烘湁鐘舵€佺殑鏁版嵁缁撴瀯锛屾牴鎹璞$殑褰撳墠鐘舵€佸畾涔変笉鍚岀殑鍚箟锛涚被鍨嬫寚閽堬紙ClassPointer锛夛細鎸囧悜瀵硅薄瀵逛簬绫诲瀷鏁版嵁鐨勬寚閽堬紝鍙湁褰撹櫄鎷熸満閲囩敤鐩存帴鎸囬拡鐨勫璞¤闂拰瀹氫綅鏂瑰紡鏃舵墠闇€瑕佸皢绫诲瀷鎸囬拡璁板綍鍦ㄥ璞′笂锛屼絾鏄璞¤闂拰瀹氫綅浣跨敤鍙ユ焺鐨勬柟娉曚笉闇€瑕佽繖涓寚閽堬紱鏁扮粍闀垮害锛氭暟缁勭被鍨嬬殑鍏冪礌闀垮害鏃犳硶棰勫厛纭畾锛岃€屾槸鍦ㄥ垱寤哄璞″悗鍥哄畾涓嬫潵锛屾墍浠ユ暟缁勫璞$殑瀹為檯鍏冪礌涓暟浼氳褰曞湪鏁扮粍瀵硅薄鐨勫璞″ご涓€備笅闈㈢殑婕旂ず妫€鏌ユ暟缁勫璞$殑瀵硅薄澶翠腑鐨勬暟缁勯暱搴﹀瓧娈碉細绀轰緥绋嬪簭char[]str=newchar[2];System.out.println(ClassLayout.parseInstance(str).toPrintable());杈撳嚭鏃ュ織[C瀵硅薄Internet锛氬亸绉诲ぇ灏忕被鍨嬭鏄庡€?4锛堝璞℃爣澶达級01000000锛?000000000000000000000000000000000000000000000000000000000000000000000000000宸烇級锛?锛?4锛堝璞℃爣澶达級0000S锛?00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000鏉ュ窞锛?0000000000000000011111000)(-134217663)124(ObjectHeader)[鏁扮粍闀垮害锛?]020000(0000000000000000000000000000)(2)164CHAR[C.n/A204锛堢敱浜庝笅涓€涓璞″榻愯€屽鑷寸殑鎹熷け锛夊疄渚嬪ぇ灏忥細24瀛楄妭绌洪棿鎹熷け锛氬唴閮?瀛楄妭+澶栭儴4瀛楄妭=鎬诲叡4瀛楄妭姝e浣犳墍鐪嬪埌鐨勶紝瀵硅薄涓湁涓€涓?瀛楄妭鐨勫尯鍩熸爣澶达紝鏄剧ず2鐨勬暟缁勯暱搴︺€?.2瀹炰緥鏁版嵁锛圛nstanceData锛夋櫘閫氬璞″拰Class瀵硅薄鐨勫疄渚嬫暟鎹尯鏄笉鍚岀殑锛岄渶瑕佸垎寮€璁ㄨ锛?.鏅€氬璞★細鍖呮嫭褰撳墠绫诲0鏄庣殑瀹炰緥瀛楁鍜岀埗绫诲0鏄庣殑瀹炰緥瀛楁锛屾帓闄ょ被鐨勯潤鎬佸瓧娈碉紱2锛庣被瀵硅薄锛氬寘鎷綋鍓嶇被澹版槑鐨勯潤鎬佸瓧娈靛拰鏂规硶琛ㄧ瓑銆傚叾涓紝鐖剁被澹版槑鐨勫疄渚嬪瓧娈典細鏀惧湪瀛愮被鐨勫疄渚嬪瓧娈典箣鍓嶏紝瀛楁涔嬮棿鐨勫瓧娈典笉鎺掑垪鍦ㄦ簮浠g爜涓殑澹版槑椤哄簭锛屼絾瀹藉害鐩稿悓鐨勫瓧娈典細鍒嗛厤鍦ㄤ竴璧凤細寮曠敤绫诲瀷>long/double>int/float>short/char>byte/boolean銆傚鏋滆櫄鎷熸満鍚敤浜咰ompactFields绛栫暐锛屽垯瀛愮被鐨勮緝绐勫瓧娈靛彲鑳戒細鎻掑叆鍒扮埗绫诲彉閲忕殑绌洪殭涓€?.3瀵归綈濉厖锛圥adding锛変竴涓狧otSpot铏氭嫙鏈哄璞$殑澶у皬蹇呴』鎸?瀛楄妭瀵归綈銆傚鏋滃璞″疄闄呭崰鐢ㄧ殑绌洪棿灏忎簬8瀛楄妭鐨勫€嶆暟锛屽垯浼氬湪瀵硅薄鏈熬娣诲姞瀵归綈濉厖銆傚榻愬~鍏呬笉浠呭彲浠ヤ繚璇佸璞$殑璧峰浣嶇疆鏄鍒欑殑锛屼篃鏄疄鐜版寚閽堝帇缂╃殑鍓嶆彁銆?.浠€涔堟槸鎸囬拡鍘嬬缉锛熸垜浠兘鐭ラ亾32浣嶅拰64浣岰PU鏄湁鍖哄埆鐨勩€傝繖閲岀殑浣嶆暟鍐冲畾浜咰PU鍦ㄥ唴瀛樹腑鐨勫鍧€鑳藉姏銆備竴涓?2浣嶇殑鎸囬拡鍙互琛ㄧず涓€涓?G鐨勫唴瀛樼┖闂达紝鑰屼竴涓?4浣嶇殑鎸囬拡鍙互琛ㄧず涓€涓潪甯稿ぇ鐨勫ぉ鏂囨暟瀛椼€備絾鏄洰鍓嶅競闈笂鐨勭數鑴戝唴瀛樹笉鍙兘鏈夎繖涔堝ぇ鐨勭┖闂达紝鎵€浠?4浣嶆寚閽堜腑鐨勫緢澶氶珮浣嶅疄闄呬笂閮借娴垂浜嗐€侸ava铏氭嫙鏈轰负浜嗘彁楂樺唴瀛樺埄鐢ㄦ晥鐜囷紝閲囩敤浜嗘寚閽堝帇缂╋紝浣垮緱32浣嶆寚閽堜笉浠呭彲浠ヨ〃绀?G鍐呭瓨绌洪棿锛岃繕鍙互琛ㄧず鐣ュぇ浜?G鐨勫唴瀛樼┖闂达紙涓嶈秴杩?2G锛夈€傝繖鏍峰氨鍙互鍦ㄤ娇鐢ㄦ洿澶у爢鍐呭瓨鐨勬儏鍐典笅缁х画浣跨敤32浣嶆寚閽堝彉閲忥紝浠庤€屽噺灏戠▼搴忓唴瀛樺崰鐢ㄣ€備絾鏄紝涓€涓?2浣嶇殑鎸囬拡鎬庝箞鍙兘浠h〃瓒呰繃4G鐨勫唴瀛樼┖闂村憿锛熸垜浠妸64浣嶆寚閽堢殑楂?2浣嶆埅鎺夊悗锛屽墿涓嬬殑32浣嶆寚閽堟渶澶氬彧鑳戒唬琛?G绌洪棿锛熷湪瑙i噴杩欎釜闂涔嬪墠锛屽厛瑙i噴涓€涓嬩负浠€涔?2浣嶆寚閽堝彲浠ヤ唬琛?G鍐呭瓨绌洪棿锛熺粏蹇冪殑鍚屽浼氬彂鐜扮敤$2^{32}$璁$畻鎵嶅緱鍒?12M锛岄偅涔?G鏄€庝箞璁$畻鐨勫憿锛熷疄闄呬笂锛屾搷浣滅郴缁熶腑鏈€灏忕殑鍐呭瓨鍒嗛厤鍗曚綅鏄瓧鑺傦紝鑰屼笉鏄綅銆傛搷浣滅郴缁熶笉鑳芥寜浣嶈闂唴瀛橈紝鍙兘鎸夊瓧鑺傝闂唴瀛樸€傛墍浠ワ紝32浣嶆寚閽堝疄闄呬笂浠h〃鐨勬槸$2^{32}bytes$锛岃€屼笉鏄?2^{32}bits$锛屼篃灏辨槸4G鍐呭瓨绌洪棿銆傜悊瑙d簡4G鐨勮绠楅棶棰樹箣鍚庯紝瑕佽В閲?2浣嶆寚閽堝浣曡〃绀?2G鐨勫唴瀛樼┖闂村氨寰堢畝鍗曚簡銆傝繖灏卞張鍥炲埌浜嗕笂涓€鑺傛彁鍒扮殑瀵硅薄鐨?瀛楄妭瀵归綈銆傛搷浣滅郴缁熸妸8浣嶇粍鍚堟垚1涓瓧鑺傦紝涔熷氨鏄鍙渶瑕佹爣璁版瘡8浣嶇殑涓暟锛孞ava铏氭嫙鏈轰篃鍙互鍦ㄤ繚璇佸璞℃寜8瀛楄妭瀵归綈鍚庯紝鍙渶瑕佹爣璁版瘡8涓瓧鑺傘€傝€屾棤闇€鏍囪姣忎釜瀛楄妭鐨勭紪鍙枫€傛墍浠ワ紝32浣嶆寚閽堝疄闄呬笂浠h〃鐨勬槸$2^{32}*8bytes$锛屼篃灏辨槸32G鐨勫唴瀛樼┖闂淬€傚涓嬪浘鎵€绀猴細鎻愮ず锛氫娇鐢↗OL鍒嗘瀽涓婇潰瀵硅薄鐨勫唴瀛樺竷灞€鏃讹紝杈撳叆logUsingcompressedoopwith3-bitshift銆傝〃绀哄璞″榻?瀛楄妭锛屾寚閽堢Щ浣?浣嶃€傚鏋滃璞″榻愬~鍏呯户缁墿澶э紝32浣嶆寚閽堟槸鍚﹁兘浠h〃鏇村ぇ鐨勫唴瀛樼┖闂达紵姝g‘鐨勩€傚悓鏍凤紝濡傛灉alignmentpadding鎵╁ぇ鍒?6浣嶅榻愶紝鍙互琛ㄧず64G绌洪棿锛屽鏋滄墿澶у埌32浣嶅榻愶紝鍙互琛ㄧず128G绌洪棿銆傜劧鑰岋紝鎵╁ぇalignmentpadding鐩稿綋浜庢墿澶ф瘡涓璞$殑骞抽潰灏哄銆傚榻愯秺澶э紝濉厖鐨勭┖闂磋秺蹇姷娑堟寚閽堝帇缂╁噺灏戠殑绌洪棿锛屽緱涓嶅伩澶便€傚洜姝わ紝Java铏氭嫙鏈虹殑閫夋嫨鏄湪鍐呭瓨绌洪棿瓒呰繃32G鏃舵斁寮冩寚閽堝帇缂╃瓥鐣ワ紝鑰屼笉鏄竴鍛冲湴澧炲姞瀵归綈濉厖銆?銆佽嚦姝わ紝瀵硅薄鐨勫唴瀛樺竷灞€灏卞畬鎴愪簡銆傛垜浠浜嗗璞$殑鍒嗛厤鍖哄煙锛屽璞℃暟鎹殑璁块棶鍜屽畾浣嶆柟娉曪紝瀵硅薄鍐呴儴鐨勫竷灞€褰㈠紡銆傚湪涓嬩竴绡囨枃绔犱腑锛屾垜浠皢缁х画娣辨寲Java寮曠敤绫诲瀷鐨勫疄鐜板師鐞嗐€傚叧娉ㄦ垜锛屽甫浣犳墦閫犳牳蹇冪珵浜夊姏锛屾垜浠笅鏈熷啀瑙併€傚弬鑰冭祫鏂欐繁鍏ョ悊瑙ava铏氭嫙鏈猴紙绗?鐗堬級锛堢1銆?銆?3绔狅級-鍛ㄥ織鏄庢繁鍏ョ悊瑙ndroid锛欽ava铏氭嫙鏈篈RT锛堢8.7绔犵被鍔犺浇銆侀摼鎺ュ拰鍒濆鍖栵級-閭撳嚒骞宠壓鏈疛ava骞跺彂缂栫▼鍩虹锛堢2绔燡ava骞跺彂鏈哄埗搴曞眰瀹炵幇鍘熺悊锛夆€斺€旀柟鑵鹃锛岄瓘楣忥紝绋嬫檽鏄嶫VM鍓栨瀽澶稿厠#23锛氬帇缂╁紩鐢ㄢ€斺€擜lekseyShipil褢vJVM鍓栨瀽澶稿厠#24锛氬璞″榻愨€斺€擜lekseyShipil褢v浣犵殑鍠滄瀵规垜鏉ヨ鎰忎箟閲嶅ぇ锛佸井淇℃悳绱㈠叕浼楀彿銆愬江鏃澘銆戯紝甯屾湜澶у涓€璧锋帰璁ㄦ妧鏈紝鎵惧埌蹇楀悓閬撳悎鐨勬湅鍙嬶紝鎴戜滑涓嬫湡鍐嶈锛佷韩鍙楅槼鍏夈€?/p>

最新推荐
猜你喜欢