רעÐéÄâ»úÓë±àÒëÆ÷Ñо¿

2020Äê11ÔÂ19ÈÕ

µÚ2.1ƪ-HotSpot VMÔ´Âë·ÖÎöÖ®C++¶ÔÏóµÄÄÚ´æ²¼¾Ö

ÕªÒª£º HotSpot²ÉÓÃÁËOOP-KlassÄ£ÐÍÀ´ÃèÊöJavaÀàºÍ¶ÔÏó¡£OOP£¨Ordinary Object Pointer£©Ö¸µÄÊÇÆÕͨ¶ÔÏóÖ¸Õ룬¶øKlassÓÃÀ´ÃèÊö¶ÔÏóµÄ¾ßÌåÀàÐÍ¡£ÎªÁ˸üºÃÀí½âÕâ¸öÄ£ÐÍ£¬Ê×ÏÈÒª½éÉÜÒ»ÏÂC++µÄÄÚ´æ¶ÔÏóÄ£ÐͺÍÐ麯Êý¡£ ÕâÀïÖ»¼òµ¥½éÉÜһϣ¬Èç¹ûÒªÉîÈëÁ˽âC++¶ÔÏóÄ£ÐÍ£¬½¨Òé ÔĶÁÈ«ÎÄ

posted @ 2020-11-19 08:15 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(1187) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê11ÔÂ18ÈÕ

µÚ1.4ƪ-HotSpot VMµÄÆô¶¯¹ý³Ì£¨ÅäÊÓƵ½øÐÐÔ´Âë·ÖÎö£©

ÕªÒª£º a56爆大奖在线娱乐½«Ïêϸ½éÉÜHotSpotµÄÆô¶¯¹ý³Ì£¬Æô¶¯¹ý³ÌÉæ¼°µ½µÄÂß¼­±È½Ï¸´ÔÓ£¬Ï¸½ÚÒ²±È½Ï¶à£¬ÎªÁËÈôó¼Ò¸ü¿ìµÄÁ˽âÕⲿ·Ö֪ʶ£¬a56爆大奖在线娱乐¼ÖÆÁ˶ÔÓ¦µÄÊÓƵ·Åµ½ÁËBÕ¾ÉÏ£¬´ó¼Ò¿ÉÒԲο¼¡£ µÚ4½Ú-HotSpotµÄÆô¶¯¹ý³Ì ÏÂÃæa56爆大奖在线娱乐ÃÇ¿ªÊ¼ÒÔÎÄÕµÄÐÎʽ¼òµ¥½éÉÜÒ»ÏÂÆô¶¯¹ý³Ì¡£ HotSpotͨ³£»áͨ¹ýJAVA_HOMEĿ¼ÏµÄbi ÔĶÁÈ«ÎÄ

posted @ 2020-11-18 09:17 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(1705) ÆÀÂÛ(2) ÍƼö(0) ±à¼­

2020Äê11ÔÂ17ÈÕ

µÚ1.2ƪ-µ÷ÊÔHotSpot VMÔ´´úÂ루ÅäÊÓƵ£©

ÕªÒª£º a56爆大奖在线娱乐½«Ïêϸ½éÉÜÔÚUbuntu16.04 LTSÉ϶ÔOpenJDK8½øÐбàÒ룬ΪÁË·½±ã´ó¼Ò¿ìËٴÆðOpenJDK8µÄµ÷ÊÔ¿ª·¢»·¾³£¬a56爆大奖在线娱乐»¹Â¼ÖÆÁ˶ÔÓ¦µÄÊÓƵ·Åµ½ÁËBÕ¾ÉÏ£¬´ó¼Ò¿ÉÒԲο¼¡£ ÊÓƵµØÖ·£ºhttps://space.bilibili.com/27533329 ÏÂÃæa56爆大奖在线娱乐ÃÇ¿ªÊ¼»·¾³µÄ´î½¨¹ý³Ì¡£ ֮ǰµÄÎÄ ÔĶÁÈ«ÎÄ

posted @ 2020-11-17 06:50 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(2084) ÆÀÂÛ(0) ÍƼö(1) ±à¼­

2020Äê11ÔÂ16ÈÕ

µÚ1.1ƪ-ÔÚUbuntu 16.04ÉϱàÒëOpenJDK8µÄÔ´´úÂ루ÅäÊÓƵ£©

ÕªÒª£º a56爆大奖在线娱乐½«Ïêϸ½éÉÜÔÚUbuntu16.04 LTSÉ϶ÔOpenJDK8½øÐбàÒ룬ΪÁË·½±ã´ó¼Ò¿ìËٴÆðOpenJDK8µÄµ÷ÊÔ¿ª·¢»·¾³£¬a56爆大奖在线娱乐»¹Â¼ÖÆÁ˶ÔÓ¦µÄÊÓƵ·Åµ½ÁËBÕ¾ÉÏ£¬´ó¼Ò¿ÉÒԲο¼¡£ ÊÓƵµØÖ·£ºhttps://space.bilibili.com/27533329 ÏÂÃæa56爆大奖在线娱乐ÃÇ¿ªÊ¼»·¾³µÄ´î½¨¹ý³Ì¡£ 1¡¢×¼±¸ ÔĶÁÈ«ÎÄ

posted @ 2020-11-16 07:32 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(1660) ÆÀÂÛ(4) ÍƼö(0) ±à¼­

2020Äê8ÔÂ21ÈÕ

ת·¢±í

ÕªÒª£º TemplateInterpreter::initialize()·½·¨ÊµÏÖÈçÏ£º Ô´´úÂëλÖãº/src/share/vm/interpreter/templateInterpreter.cpp void TemplateInterpreter::initialize() { if (_code != ÔĶÁÈ«ÎÄ

posted @ 2020-08-21 16:33 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(519) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ19ÈÕ

Ä£°å±í

ÕªÒª£º JavaµÄÄ£°å½âÎöÖ´ÐÐÐèҪģ°å±íÓëת·¢±íµÄÖ§³Ö£¬¶øÕâ2¸ö±íÖеÄÊý¾ÝÔÚHotSpotÐéÄâ»úÆô¶¯Ê±¾Í»á³õʼ»¯¡£ÕâһƪÊ×ÏȽéÉÜÄ£°å±í¡£ ÔÚÆô¶¯ÐéÄâ»ú½×¶Î»áµ÷ÓÃinit_globals()·½·¨³õʼ»¯È«¾ÖÄ£¿é£¬ÔÚÕâ¸ö·½·¨ÖÐͨ¹ýµ÷ÓÃinterpreter_init()·½·¨³õʼ»¯Ä£°å½âÊÍÆ÷£¬µ÷ÓÃÕ»ÈçÏ£º Temp ÔĶÁÈ«ÎÄ

posted @ 2020-08-19 06:49 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(632) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ18ÈÕ

ÐéÄâ»úÖ´ÐÐģʽ

ÕªÒª£º ÔÚHotSpotÀïÃ棬´úÂëÖ´ÐÐÓÐÁ½ÖÖģʽ£º Ö±½Ó½âÊÍÖ¸ÁÕâʹÓõÄÊÇHotSpotµÄ½âÊÍÒýÇ棬Ëü²ÉÓÃÄ£°å½âÊÍ£¬½«Ã¿Ò»ÌõÖ¸ÁîÖ±½Ó·­Òë³É±¾µØ´úÂ룬¶øºóÓÉÓ²¼þÖ±½ÓÖ´ÐУ» ±àÒëÖ´ÐУºÊÇÖ¸£¬½«´úÂëÖ±½Ó·­Òë³É±¾µØ´úÂëÖ´ÐУ¬Õâ¾ÍÊǶúÊìÄÜÏêµÄJIT±àÒëÆ÷£¬¸ü¼Ó׼ȷµÄ˵ÊÇHotSpot Compiler£» HotSp ÔĶÁÈ«ÎÄ

posted @ 2020-08-18 16:22 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(698) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

dispatch_next()·½·¨µÄʵÏÖ

ÕªÒª£º ֮ǰµÄÎÄÕ½éÉܵ½£¬ÔÚgenerate_normal_entry()º¯ÊýÖлáµ÷ÓÃgenerate_fixed_frame()º¯ÊýΪJava·½·¨µÄÖ´ÐÐÉú³É¶ÔÓ¦µÄÕ»Ö¡£¬½ÓÏÂÀ´»¹»áµ÷ÓÃdispatch_next()º¯ÊýÖ´ÐÐJava·½·¨µÄ×Ö½ÚÂë¡£generate_normal_entry()º¯ÊýÖе÷ÓõÄdis ÔĶÁÈ«ÎÄ

posted @ 2020-08-18 10:54 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(622) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

generate_fixed_frame()·½·¨Éú³ÉJava·½·¨Õ»Ö¡

ÕªÒª£º ÔÚ´Ógenerate_normal_entry()º¯Êýµ÷ÓÃgenerate_fixed_frame()º¯ÊýʱµÄÕ»Óë¼Ä´æÆ÷µÄ״̬ÈçÏ£º Õ»µÄ״̬ÈçÏÂͼËùʾ¡£ ¸÷¸ö¼Ä´æÆ÷µÄ״̬ÈçÏÂËùʾ¡£ rax: return address // %rax¼Ä´æÆ÷Öд洢µÄÊÇ·µ»ØµØÖ·r rbx: Method* // Òª ÔĶÁÈ«ÎÄ

posted @ 2020-08-18 09:35 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(672) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

JVMµÄ·½·¨Ö´ÐÐÒýÇæ-entry pointÕ»Ö¡

ÕªÒª£º ½Ó×ÅÉÏһƪȥ½²£¬»Øµ½JavaCalls::call_helper()ÖУº address entry_point = method->from_interpreted_entry(); entry_pointÊÇ´Óµ±Ç°ÒªÖ´ÐеÄJava·½·¨ÖлñÈ¡µÄ£¬¶¨ÒåÈçÏ£º Ô´´úÂëλÖãº/openjdk/hotspo ÔĶÁÈ«ÎÄ

posted @ 2020-08-18 08:24 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(1180) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ17ÈÕ

CallStubÕ»Ö¡

ÕªÒª£º ֮ǰ¶à´ÎÌáµ½½Ó´¥µ½µ÷ÓÃJavaCalls::call()º¯ÊýÀ´Ö´ÐÐJava·½·¨£¬È磺 £¨1£©JavaÖ÷Àà×°ÔØʱ£¬µ÷ÓÃJavaCalls::call()·½·¨Ö´ÐеÄJava·½·¨checkAndLoadMain()·½·¨£» £¨2£©ÀàµÄ³õʼ»¯¹ý³ÌÖУ¬µ÷ÓÃJavaCalls::call()·½·¨Ö´ÐеÄJava·½·¨ ÔĶÁÈ«ÎÄ

posted @ 2020-08-17 10:36 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(1035) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ16ÈÕ

HotSpotµÄÀ¬»ø»ØÊÕÆ÷

ÕªÒª£º Èç¹û˵ÊÕ¼¯Ëã·¨ÊÇÄÚ´æ»ØÊյķ½·¨ÂÛ£¬ÄÇôÀ¬»øÊÕ¼¯Æ÷¾ÍÊÇÄÚ´æ»ØÊյľßÌåʵÏÖ¡£ÕâÀïÌÖÂÛµÄÊÕ¼¯Æ÷»ùÓÚJDK 1.7 Update 14Ö®ºóµÄ HotSpot ÐéÄâ»ú£¬Õâ¸öÐéÄâ»ú°üº¬µÄËùÓÐÊÕ¼¯Æ÷ÈçÏÂͼËùʾ ÉÏͼչʾÁË 7 ÖÖ×÷ÓÃÓÚ²»Í¬·Ö´úµÄÊÕ¼¯Æ÷£¬Èç¹ûÁ½¸öÊÕ¼¯Æ÷Ö®¼ä´æÔÚÁ¬Ïߣ¬¾Í˵Ã÷ËüÃÇ¿ÉÒÔ´îÅäʹÓá£ÐéÄâ»úËù´¦ ÔĶÁÈ«ÎÄ

posted @ 2020-08-16 10:33 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(676) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

HotSpotµÄÀ¬»ø»ØÊÕËã·¨

ÕªÒª£º ÕâϵÁÐÎÄÕÂÖ»¼òµ¥½éÉÜÒ»ÏÂHotSpotÀ¬»ø»ØÊÕÖÐÉæ¼°µ½µÄËã·¨¼°Ïà¹ØµÄÀ¬»ø»ØÊÕÆ÷£¬²¢²»½øÐÐÔ´´úÂë·ÖÎö£¬ºóÃæ»á¿ªÒ»¸öϵÁжÔHotSpotµÄÀ¬»ø»ØÊÕÒÔ¼°ÄÚ´æ¹ÜÀí½øÐÐÔ´´úÂë½â¶Á¡£ Éæ¼°µ½µÄÀ¬»ø»ØÊÕËã·¨Ò»¹²ÓÐ 4 ÖÖ£º ±ê¼Ç-Çå³ýËã·¨ ¸´ÖÆËã·¨ ±ê¼ÇÕûÀíËã·¨ ·Ö´úÊÕ¼¯Ëã·¨ ±ê¼Ç-Çå³ýËã·¨ ×î»ù´¡µÄÊÕ¼¯Ëã·¨ÊÇ¡° ÔĶÁÈ«ÎÄ

posted @ 2020-08-16 10:32 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(644) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

JavaÒýÓÃÀàÐÍÖ®×îÖÕÒýÓÃ

ÕªÒª£º FinalReferenceÀàÖ»ÓÐÒ»¸ö×ÓÀàFinalizer£¬²¢ÇÒFinalizerÓɹؼü×ÖfinalÐÞÊΣ¬a56爆大奖在线娱乐ÎÞ·¨¼Ì³ÐÀ©Õ¹¡£ÀàµÄ¶¨ÒåÈçÏ£º class FinalReference<T> extends Reference<T> { public FinalReference(T referent ÔĶÁÈ«ÎÄ

posted @ 2020-08-16 10:22 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(395) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

JavaÒýÓÃÀàÐÍÖ®ÈõÒýÓÃÓë»ÃÏñÒýÓÃ

ÕªÒª£º Õâһƪ½«½éÉÜÈõÒýÓúͻÃÏñÒýÓᣠ1¡¢WeakReference WeakReferenceÒ²¾ÍÊÇÈõÒýÓã¬ÈõÒýÓúÍÈíÒýÓÃÀàËÆ£¬ËüÊÇÓÃÀ´ÃèÊö"·Ç±ØÐë"µÄ¶ÔÏóµÄ£¬ËüµÄÇ¿¶È±ÈÈíÒýÓÃÒª¸üÈõһЩ¡£±»ÈõÒýÓùØÁªµÄ¶ÔÏóÖ»ÄÜÉú´æµ½ÏÂÒ»´ÎÀ¬»øÊÕ¼¯·¢Éú֮ǰ£¬¼òÑÔÖ®¾ÍÊÇ£ºÒ»µ©·¢ÉúGC±Ø¶¨»ØÊÕ±»ÈõÒýÓùØÁªµÄ¶ÔÏ󣬲»¹Üµ±Ç°µÄÄÚ ÔĶÁÈ«ÎÄ

posted @ 2020-08-16 10:20 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(386) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

JavaÒýÓÃÀàÐÍÖ®ÈíÒýÓã¨2£©

ÕªÒª£º ÏÂÃæ½Ó×ÅÉÏһƪ½éÉܵÚ2½×¶ÎºÍµÚ3½×¶ÎµÄ´¦ÀíÂß¼­¡£ 2¡¢process_phase2() µÚ2¸ö½×¶a56爆大奖在线娱乐ƳýËùÓеÄreferent»¹´æ»îµÄReference£¬Ò²¾ÍÊÇ´Órefs_listÖÐÒƳýReference¡£process_phase2()·½·¨µÄʵÏÖÈçÏ£º // Phase2: remove all t ÔĶÁÈ«ÎÄ

posted @ 2020-08-16 09:37 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(303) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

JavaÒýÓÃÀàÐÍÖ®ÈíÒýÓã¨1£©

ÕªÒª£º JavaʹÓÃSoftReferenceÀ´a56爆大奖在线娱乐ÈíÒýÓã¬ÈíÒýÓÃÊÇÓÃÀ´ÃèÊöһЩ¡°»¹ÓÐÓõ«ÊǷDZØÐ롱µÄ¶ÔÏ󡣶ÔÓÚÈíÒýÓùØÁª×ŵĶÔÏó£¬ÔÚJVMÓ¦Óü´½«·¢ÉúÄÚ´æÒç³öÒ쳣֮ǰ£¬½«»á°ÑÕâЩÈíÒýÓùØÁªµÄ¶ÔÏóÁнøÈ¥»ØÊÕ¶ÔÏó·¶Î§Ö®ÖнøÐеڶþ´Î»ØÊÕ¡£Èç¹ûÕâ´Î»ØÊÕÖ®ºó»¹ÊÇûÓÐ×ã¹»µÄÄڴ棬²Å»áÅ׳öÄÚ´æÒç³öÒì³£¡£¼òµ¥À´Ëµ¾ÍÊÇ£º ÔĶÁÈ«ÎÄ

posted @ 2020-08-16 09:29 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(601) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ15ÈÕ

JavaÒýÓÃÀàÐÍ

ÕªÒª£º JavaÖÐÒ»¹²ÓÐ4ÖÖÒýÓÃÀàÐÍ£¨Æäʵ»¹ÓÐһЩÆäËûµÄÒýÓÃÀàÐͱÈÈçFinalReference£©£ºÇ¿ÒýÓá¢ÈíÒýÓá¢ÈõÒýÓá¢ÐéÒýÓá£ÆäÖÐÇ¿ÒýÓþÍÊÇÈçϵÄÇé¿ö£º Object a=new Object(); obj³ÖÓеÄObject¶ÔÏóµÄÒýÓþÍÊÇÇ¿ÒýÓã¬ÔÚJavaÖв¢Ã»ÓжÔÓ¦µÄReferenceÀà¡£ ±¾ÆªÎÄÕ ÔĶÁÈ«ÎÄ

posted @ 2020-08-15 08:46 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(621) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

¶ÔÏóµÄ´´½¨

ÕªÒª£º Java¶ÔÏó´´½¨µÄÁ÷³Ì´ó¸ÅÈçÏ£º ¼ì²é¶ÔÏóËùÊôÀàÊÇ·ñÒѾ­±»¼ÓÔؽâÎö£» Ϊ¶ÔÏó·ÖÅäÄÚ´æ¿Õ¼ä£» ½«·ÖÅä¸ø¶ÔÏóµÄÄÚ´æ³õʼ»¯ÎªÁãÖµ£» Ö´ÐжÔÏóµÄ<init>·½·¨½øÐгõʼ»¯¡£ ¾Ù¸öÀý×ÓÈçÏ£º public class Test { public static void main(String[] args) ÔĶÁÈ«ÎÄ

posted @ 2020-08-15 08:45 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(891) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ13ÈÕ

µÚ7.6ƪ-ÀàµÄ³õʼ»¯

ÕªÒª£º ¶ÔÀà½øÐгõʼ»¯Ê±£¬Í¨³£»áµ÷ÓÃÈçÏ·½·¨£º void InstanceKlass::initialize(TRAPS) { if (this->should_be_initialized()) { HandleMark hm(THREAD); instanceKlassHandle this_oop(T ÔĶÁÈ«ÎÄ

posted @ 2020-08-13 15:49 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(911) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

³õʼ»¯itable

ÕªÒª£º ÔÚInstanceKlass::link_class_impl()·½·¨ÖÐÍê³É·½·¨Á¬½Óºó»á¼ÌÐø³õʼ»¯vtableÓëitable£¬Ö®Ç°ÒѾ­½éÉܹývtableÓëitable£¬²¢ÇÒÔÚÀà½âÎö¹ý³ÌÖÐÒѾ­Íê³ÉÁË´óСµÄ¼ÆËã²¢ÇÒҲΪÏà¹ØÐÅÏ¢µÄ´æ´¢¿ª±ÙÁ˶ÔÓ¦µÄÄÚ´æ¿Õ¼ä£¬Ò²¾ÍÊÇÔÚInstanceKlass±¾ÉíÐèÒªÕ¼ÓõÄÄÚ ÔĶÁÈ«ÎÄ

posted @ 2020-08-13 12:11 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(862) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

³õʼ»¯vtable

ÕªÒª£º ÔÚInstanceKlass::link_class_impl()·½·¨ÖÐÍê³É·½·¨Á¬½Óºó»á¼ÌÐø³õʼ»¯vtableÓëitable£¬Ö®Ç°ÒѾ­½éÉܹývtableÓëitable£¬²¢ÇÒÔÚÀà½âÎö¹ý³ÌÖÐÒѾ­Íê³ÉÁË´óСµÄ¼ÆËã²¢ÇÒҲΪÏà¹ØÐÅÏ¢µÄ´æ´¢¿ª±ÙÁ˶ÔÓ¦µÄÄÚ´æ¿Õ¼ä£¬Ò²¾ÍÊÇÔÚInstanceKlass±¾ÉíÐèÒªÕ¼ÓõÄÄÚ ÔĶÁÈ«ÎÄ

posted @ 2020-08-13 09:57 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(725) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ12ÈÕ

µÚ7.5ƪ-·½·¨µÄÁ¬½Ó

ÕªÒª£º ·½·¨Á¬½Ó×öµÄ×îÖ÷ÒªµÄʾÍÊÇΪ·½·¨µÄÖ´ÐÐÉèÖýâÊÍÈë¿ÚºÍ±àÒëÈë¿Ú¡£ÔÚInstanceKlass::link_class_impl()·½·¨ÖжÔ×Ö½ÚÂëÑéÖ¤Íê³Éºó»áµ÷ÓÃInstanceKlass::link_methods()·½·¨£¬ÈçÏ£º // Now relocate and link method ent ÔĶÁÈ«ÎÄ

posted @ 2020-08-12 09:40 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(531) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ7.4ƪ-ÀàµÄÁ¬½ÓÖ®ÖØд£¨2£©

ÕªÒª£º ½Ó×ÅÉÏһƪ¼ÌÐø·ÖÎöRewriter::Rewriter()¹¹Ô캯ÊýÖÐÍê³ÉµÄÂß¼­¡£ÔÚ¹¹Ô캯ÊýÖлáµ÷ÓÃmake_constant_pool_cache()º¯Êý£¬²»¹ýÔÚÏȽéÉÜÕâ¸öº¯Êý֮ǰ£¬ÐèÒª½éÉÜÒ»ÏÂConstantPoolCacheÓëConstantPoolCacheEntry¡£ÕâÁ½¸öÀ඼¶¨ÒåÔÚcpCa ÔĶÁÈ«ÎÄ

posted @ 2020-08-12 09:26 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(744) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ11ÈÕ

µÚ7.3ƪ-ÀàµÄÁ¬½ÓÖ®ÖØд£¨1£©

ÕªÒª£º µ÷ÓÃInstanceKlassÀàµÄrewrite_class()º¯ÊýÖØд×Ö½ÚÂ룬ʵÏÖÈçÏ£º // Rewrite the byte codes of all of the methods of a class. // The rewriter must be called exactly once. ÔĶÁÈ«ÎÄ

posted @ 2020-08-11 11:35 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(621) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ7.2ƪ-ÀàµÄÁ¬½ÓÖ®ÑéÖ¤

ÕªÒª£º ÔÚ½éÉÜ×Ö½ÚÂëÁ¬½Ó֮ǰ£¬ÓбØÒª½éÉÜÒ»ÏÂ×Ö½ÚÂëÑéÖ¤¡£HotSpotÐéÄâ»úÆäʵ»á×ñÊØ¡¶JavaÐéÄâ»ú¹æ·¶¡·£¬¶ÔClassÎļþÖаüº¬µÄÐÅÏ¢½øÐкϷ¨ÐÔÑéÖ¤£¬ÒÔ±£Ö¤ÐéÄâ»úµÄ°²È«¡£´ÓÕûÌåÉÏÀ´¿´£¬ÑéÖ¤½×¶Î´óÖÂÉÏ»á½øÐÐÈçÏÂ4·½ÃæµÄÑéÖ¤£º Îļþ¸ñʽÑéÖ¤£º°üÀ¨Ä§Êý£¬°æ±¾ºÅµÈ£» ÔªÊý¾ÝÑéÖ¤£º¶Ô³ÌÐò½øÐÐÓïÒå·ÖÎö£¬ÈçÊÇ·ñÓи¸Àà ÔĶÁÈ«ÎÄ

posted @ 2020-08-11 09:12 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(527) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ7.1ƪ-ÀàµÄÁ¬½Ó

ÕªÒª£º ÔÚÀàµÄÁ¬½Ó֮ǰҪ±£Ö¤¶ÔÀà½øÐÐÁ˽âÎö£¬ÀýÈç³õʼ»¯Ò»¸öÀàʱ»áµ÷ÓÃinitialize_class()·½·¨£¬ÊµÏÖÈçÏ£º static void initialize_class(Symbol* class_name, TRAPS) { Klass* klass = SystemDictionary::re ÔĶÁÈ«ÎÄ

posted @ 2020-08-11 08:39 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(846) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ10ÈÕ

µÚ5.6ƪ-×ֶνâÎöÖ®×Ö¶Î×¢Èë

ÕªÒª£º ֮ǰÒѾ­½éÉܹý×ֶνâÎö£¬²»¹ýÓÉÓÚa56爆大奖在线娱乐µÄÊèºö£¬¶ªÁËÒ»²¿·Ö²»µÃ²»½éÉܵÄÄÚÈÝ£¬ÄǾÍÊÇ×Ö¶Î×¢Èë¡£¾Ù¸öÀý×ÓÈçÏ£º package jvmTest; import java.lang.management.ManagementFactory; import java.lang.management.Runtime ÔĶÁÈ«ÎÄ

posted @ 2020-08-10 16:29 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(867) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

½âÎöClassÎļþÖ®´´½¨InstanceKlass¶ÔÏó

ÕªÒª£º ClassFileParser::parseClassFile()·½·¨»á½«½âÎöClassÎļþµÄ´ó²¿·Ö½á¹û±£´æµ½instanceKlass¶ÔÏóÖС£´´½¨instanceKlass¶ÔÏóµÄ´úÂëÈçÏ£º int total_oop_map_size2 = InstanceKlass::nonstatic_oop ÔĶÁÈ«ÎÄ

posted @ 2020-08-10 16:28 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(3047) ÆÀÂÛ(0) ÍƼö(2) ±à¼­

2020Äê8ÔÂ9ÈÕ

µÚ6.5ƪ-¼ÆËãitableµÄ´óС

ÕªÒª£º ÔÚClassFileParser::parseClassFile()º¯ÊýÖмÆËãvtableºÍitableËùÐèÒªµÄ´óС£¬Ö®Ç°ÒѾ­½éÉܹývtable´óСµÄ¼ÆË㣬Õâһƪ½«Ïêϸ½éÉÜitable´óСµÄ¼ÆËã¹ý³Ì¡£µ÷ÓÃÓï¾äÈçÏ£º // Size of Java itable (in words) if( acce ÔĶÁÈ«ÎÄ

posted @ 2020-08-09 15:29 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(633) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ6.4ƪ-¼ÆËãvtableµÄ´óС

ÕªÒª£º ÔÚClassFileParser::parseClassFile()º¯ÊýÖлá¼ÆËãvtableºÍitableËùÐèÒªµÄ´óС£¬ÒòΪvtableºÍitableÊÇÄÚǶÔÚKlassÖеģ¬parseClassFile()º¯Êý½âÎöÍêClassÎļþºó»á´´½¨instanceKlassÀ´±£´æÏà¹ØµÄÐÅÏ¢£¬ÔÚ´´½¨instan ÔĶÁÈ«ÎÄ

posted @ 2020-08-09 15:28 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(723) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ8ÈÕ

µÚ6.3ƪ-klassVtableÓëklassItableÀàµÄ½éÉÜ

ÕªÒª£º klassVtableÓëklassItableÀàÓÃÀ´ÊµÏÖJava·½·¨µÄ¶à̬£¬Ò²¿ÉÒԽж¯Ì¬°ó¶¨£¬ÊÇÖ¸ÔÚÓ¦ÓÃÖ´ÐÐÆÚ¼äͨ¹ýÅжϽÓÊܶÔÏóµÄʵ¼ÊÀàÐÍ£¬¸ù¾Ýʵ¼ÊÀàÐ͵÷ÓöÔÓ¦µÄ·½·¨¡£C++ΪÁËʵÏÖ¶à̬£¬ÔÚ¶ÔÏóÖÐǶÈëÁËÐ麯Êý±ívtable£¬Í¨¹ýÐ麯Êý±íÀ´ÊµÏÖÔËÐÐÆڵķ½·¨·ÖÅÉ£¬ÕâÔÚ֮ǰ½éÉÜHotSpotµÄ¶þ·ÖÄ£ÐÍʱ¼ò ÔĶÁÈ«ÎÄ

posted @ 2020-08-08 10:17 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(1364) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ6.2ƪ-·½·¨½âÎö

ÕªÒª£º ÔÚClassFileParser::parseClassFile()º¯ÊýÖнâÎöÍê×ֶβ¢Íê³Éa56爆大奖在线娱乐×ֶεIJ¼¾Öºó£¬»á¼ÌÐø¶Ô·½·¨½øÐнâÎö£¬Ïà¹ØµÄ´¦ÀíÓï¾äÈçÏ£º bool has_final_method = false; AccessFlags promoted_flags; promoted_flags. ÔĶÁÈ«ÎÄ

posted @ 2020-08-08 09:35 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(563) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ6.1ƪ-·½·¨½âÎöÖ®MethodÓëConstMethod½éÉÜ

ÕªÒª£º MethodÖеÄÒ»¸öÖØÒª×Ö¶ÎΪ_intrinsic_id£¬ÎªÁË×·Çó¼«ÖµÄÐÔÄÜ£¬½«ÕâЩ·½·¨½Ð¹ÌÓз½·¨£¨Intrinsic Method£©¡£ËùÓеĹÌÓз½·¨¶¼ÄÜÔÚclassfile/vmSymbols.hppÖÐÕÒµ½£¬Ò»¸ö¾ø¼ÑµÄÀý×ÓÊÇjava.lang.Math¡£¶ÔÓÚMath.sqrt()£¬ÓÃJava»òÕßJ ÔĶÁÈ«ÎÄ

posted @ 2020-08-08 07:39 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(1151) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ5.5ƪ-ʹÓÃHSDB²é¿´Àà±äÁ¿µÄÄÚ´æ²¼¾Ö

ÕªÒª£º ÈçϵÄʵÀýÀ´×ÔHotspot À¬»ø»ØÊÕÖ®oop_iterate£¨Ò»£© Ô´Âë½âÎö£¬a56爆大奖在线娱乐×öÁËһЩ΢СµÄ¸Ä¶¯¡£ ²é¿´ÈçÏÂʵÀýµÄÄÚ´æ²¼¾Ö£º package com.test; public class Parent { private Integer a = 1; protected long b = 2; ÔĶÁÈ«ÎÄ

posted @ 2020-08-08 07:11 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(756) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê8ÔÂ1ÈÕ

µÚ5.4ƪ-×ֶνâÎöÖ®OopMapBlock

ÕªÒª£º OopMapBlockÊÇÒ»¸ö¼òµ¥µÄÄÚǶÔÚKlassÀïÃæµÄÊý¾Ý½á¹¹£¬ÓÃÀ´ÃèÊöoopÖаüº¬µÄÒýÓÃÀàÐÍÊôÐÔ£¬¼´¸ÃoopËùÒýÓõÄÆäËûoopÔÚoopÖеÄÄÚ´æ·Ö²¼£¬È»ºó¾Í¿ÉÒÔ¸ù¾Ýµ±Ç°oopµÄµØÖ·ÕÒµ½ËùÓÐÒýÓõÄÆäËûoopÁË£¬Æ䶨ÒåÈçÏ£º Ô´´úÂëλÖãºoops/instanceKlass.hpp // ValueO ÔĶÁÈ«ÎÄ

posted @ 2020-08-01 08:03 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(994) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ5.3ƪ-×ֶνâÎö

ÕªÒª£º ¶ÔÏóµÄ¶¨Òå˳ÐòºÍ²¼¾Ö˳ÐòÊDz»Ò»ÑùµÄ¡£a56爆大奖在线娱乐ÃÇÔÚд´úÂëµÄʱºò²»ÓùØÐÄÄÚ´æ¶ÔÆëÎÊÌ⣬µ«ÊÇÈç¹ûÄÚ´æ°´ÕÕÔ´´úÂ붨Òå˳Ðò½øÐв¼¾ÖµÄ»°£¬ÓÉÓÚcpu¶ÁÈ¡ÄÚ´æʱÊÇ°´¼Ä´æÆ÷£¨64룩´óСµ¥Î»ÔØÈëµÄ£¬Èç¹ûÔØÈëµÄÊý¾Ýºá¿çÁ½¸ö64룬Ҫ²Ù×÷¸ÃÊý¾ÝµÄ»°ÖÁÉÙÐèÒªÁ½´Î¶ÁÈ¡£¬¼ÓÉÏ×éºÏÒÆ룬»á²úÉúЧÂÊÎÊÌ⣬ÉõÖÁ»áÒý·¢Òì³£¡£±ÈÈçÔÚһЩAR ÔĶÁÈ«ÎÄ

posted @ 2020-08-01 07:20 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(900) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

2020Äê7ÔÂ31ÈÕ

µÚ5.2ƪ-×ֶνâÎö֮α¹²Ïí

ÕªÒª£º ºÃÎÄÕ£º /tong-yuan/p/FalseSharing.html »º´æϵͳÖÐÊÇÒÔ»º´æÐУ¨cache line£©Îªµ¥Î»´æ´¢µÄ¡£»º´æÐÐÊÇ2µÄÕûÊýÃݸöÁ¬Ðø×Ö½Ú£¬Ò»°ãΪ32-256¸ö×Ö½Ú¡£×î³£¼ûµÄ»º´æÐдóСÊÇ64¸ö×Ö½Ú¡£µ±¶àÏß³ÌÐ޸Ļ¥Ïà¶ÀÁ¢µÄ±äÁ¿Ê±£¬Èç¹ûÕâ ÔĶÁÈ«ÎÄ

posted @ 2020-07-31 15:28 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(542) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ5.1ƪ-×ֶνâÎö

ÕªÒª£º ÔÚClassfileParser::parseClassFile()º¯ÊýÖУ¬½âÎöÍê³£Á¿³Ø¡¢¸¸ÀàºÍ½Ó¿Úºó£¬½Ó×Å»áµ÷ÓÃparser_fields()º¯Êý½âÎö×Ö¶ÎÐÅÏ¢¡£µ÷ÓÃÓï¾äÈçÏ£º u2 java_fields_count = 0; // Fields (offsets are filled in la ÔĶÁÈ«ÎÄ

posted @ 2020-07-31 14:55 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(671) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µÚ4.5ƪ-³£Á¿³Ø½âÎö£¨2£©

ÕªÒª£º ÔÚparse_constant_pool()·½·¨Öе÷ÓÃparse_constant_pool_entries()·½·¨¶Ô³£Á¿³ØÖеĸ÷¸öÏî½øÐнâÎö£¬·½·¨µÄʵÏÖÈçÏ£º void ClassFileParser::parse_constant_pool_entries(int length, TRAPS) ÔĶÁÈ«ÎÄ

posted @ 2020-07-31 10:30 ð¯Ä¦£¨ÂíÖÇ£© ÔĶÁ(941) ÆÀÂÛ(0) ÍƼö(0) ±à¼­

µ¼º½