±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚImportNew²©¿Í£¬±¾ÎÄÖ÷Òª¶ÔJVM½øÐÐÊáÀí£¬²¢Ïêϸ½éÉÜjvmÏà¹ØÖªÊ¶ÐèÒª¹Ø×¢µÄËùÓп¼²ìµã¡£ |
|
¶ÔÓڸ㿪·¢µÄÎÒÃÇÆäʵҲÊÇÒ»Ñù£¬ÏÖÔÚÁ÷ÐеĿò¼ÜÔ½À´Ô½¶à£¬·â×°µÄÒ²Ô½À´Ô½ÍêÉÆ£¬¸÷ÖÖ¿ò¼Ü¿ÉÒԸ㶨һÇУ¬¼¸ºõ²»ÓùØ×¢µ×²ãµÄʵÏÖ£¬³õ¼¶³ÌÐòÔ±Ö»ÒªÊìϤ»ù±¾µÄʹÓ÷½·¨£¬±ã¿ÉÒÔ¿ìËٵĿª·¢ÉÏÏߣ»µ«¶ÔÓڸ߼¶³ÌÐòÔ±À´½²£¬ÄÚ¹¦µÄÐÞÁ¶È´Ô½·¢µÄÖØÒª£¬±ÈÈçËã·¨¡¢Éè¼ÆÄ£Ê½¡¢µ×²ãÔÀíµÈ£¬Ö»ÓаÑÕâЩ»ù´¡ÊìÁ·Ö®ºó£¬²ÅÄÜÔÚ¿ª·¢¹ý³ÌÖÐÖªÆäȻ֪ÆäËùÒÔÈ»£¬³öÏÖÎÊÌâʱÄÜ¿ìËÙ¶¨Î»µ½ÎÊÌâµÄ±¾ÖÊ¡£
¶ÔÓÚJava³ÌÐòÔ±À´½²£¬springÈ«¼ÒͰ¼¸ºõ¿ÉÒԸ㶨һÇУ¬springÈ«¼ÒͰ±ãÊǾ«ÃîµÄÕÐʽ£¬jvm¾ÍÊÇÄÚ¹¦ÐÄ·¨ºÜÖØÒªµÄÒ»¿é£¬ÏßÉϳöÏÖÐÔÄÜÎÊÌ⣬jvmµ÷ÓŸüÊDz»¿É»Ø±ÜµÄÎÊÌâ¡£Òò´ËJVM»ù´¡ÖªÊ¶¶ÔÓڸ߼¶³ÌÐòÔ±µÄÖØÒªÐÔ²»±ØÑÔÓÎÒ˾ÔÚÃæÊԸ߼¶¿ª·¢µÄʱºò£¬jvmÏà¹ØÖªÊ¶Ò²±Ø¶¨ÊÇ¿¼ºËµÄ±ê×¼Ö®Ò»¡£±¾ÆªÎÄÕ»á¸ù¾Ý֮ǰдµÄjvmϵÁÐÎÄÕÂÊáÀí³öjvmÐèÒª¹Ø×¢µÄËùÓп¼²ìµã¡£
jvm ×ÜÌåÊáÀí
jvmÌåϵ×ÜÌå·ÖËÄ´ó¿é£º
1.ÀàµÄ¼ÓÔØ»úÖÆ
2.jvmÄÚ´æ½á¹¹
3.GCËã·¨ À¬»ø»ØÊÕ
4.GC·ÖÎö ÃüÁîµ÷ÓÅ
µ±È»ÕâЩ֪ʶµãÔÚ֮ǰµÄÎÄÕÂÖж¼ÓÐÏêϸµÄ½éÉÜ£¬ÕâÀïÖ»×öÖ÷¸ÉµÄÊáÀí
ÕâÀï»ÁËÒ»¸ö˼άµ¼Í¼£¬½«ËùÓеÄ֪ʶµã½øÐÐÁ˳ÂÁУ¬ÒòΪͼ±È½Ï´ó¿ÉÒÔµã»÷ÓÒ¼üÏÂÔØÁË·Å´ó²é¿´¡£

ÀàµÄ¼ÓÔØ»úÖÆ
Ö÷Òª¹Ø×¢µã£º
1.ʲôÊÇÀàµÄ¼ÓÔØ
2.ÀàµÄÉúÃüÖÜÆÚ
3.Àà¼ÓÔØÆ÷
4.Ë«Ç×ίÅÉÄ£ÐÍ
ʲôÊÇÀàµÄ¼ÓÔØ
ÀàµÄ¼ÓÔØÖ¸µÄÊǽ«ÀàµÄ.classÎļþÖеĶþ½øÖÆÊý¾Ý¶ÁÈëµ½ÄÚ´æÖУ¬½«Æä·ÅÔÚÔËÐÐʱÊý¾ÝÇøµÄ·½·¨ÇøÄÚ£¬È»ºóÔÚ¶ÑÇø´´½¨Ò»¸öjava.lang.Class¶ÔÏó£¬ÓÃÀ´·â×°ÀàÔÚ·½·¨ÇøÄÚµÄÊý¾Ý½á¹¹¡£ÀàµÄ¼ÓÔØµÄ×îÖÕ²úÆ·ÊÇλÓÚ¶ÑÇøÖеÄClass¶ÔÏó£¬Class¶ÔÏó·â×°ÁËÀàÔÚ·½·¨ÇøÄÚµÄÊý¾Ý½á¹¹£¬²¢ÇÒÏòJava³ÌÐòÔ±ÌṩÁË·ÃÎÊ·½·¨ÇøÄÚµÄÊý¾Ý½á¹¹µÄ½Ó¿Ú¡£
ÀàµÄÉúÃüÖÜÆÚ
ÀàµÄÉúÃüÖÜÆÚ°üÀ¨Õ⼸¸ö²¿·Ö£¬¼ÓÔØ¡¢Á¬½Ó¡¢³õʼ»¯¡¢Ê¹ÓúÍÐ¶ÔØ£¬ÆäÖÐǰÈý²¿ÊÇÀàµÄ¼ÓÔØµÄ¹ý³Ì,ÈçÏÂͼ£»

1.¼ÓÔØ£¬²éÕÒ²¢¼ÓÔØÀàµÄ¶þ½øÖÆÊý¾Ý£¬ÔÚJava¶ÑÖÐÒ²´´½¨Ò»¸öjava.lang.ClassÀàµÄ¶ÔÏó
2.Á¬½Ó£¬Á¬½ÓÓÖ°üº¬Èý¿éÄÚÈÝ£ºÑéÖ¤¡¢×¼±¸¡¢³õʼ»¯¡£1£©ÑéÖ¤£¬Îļþ¸ñʽ¡¢ÔªÊý¾Ý¡¢×Ö½ÚÂë¡¢·ûºÅÒýÓÃÑéÖ¤£»2£©×¼±¸£¬ÎªÀàµÄ¾²Ì¬±äÁ¿·ÖÅäÄڴ棬²¢½«Æä³õʼ»¯ÎªÄ¬ÈÏÖµ£»3£©½âÎö£¬°ÑÀàÖеķûºÅÒýÓÃת»»ÎªÖ±½ÓÒýÓÃ
3.³õʼ»¯£¬ÎªÀàµÄ¾²Ì¬±äÁ¿¸³ÓèÕýÈ·µÄ³õʼֵ
4.ʹÓã¬new³ö¶ÔÏó³ÌÐòÖÐʹÓÃ
5.Ð¶ÔØ£¬Ö´ÐÐÀ¬»ø»ØÊÕ
¼¸¸öСÎÊÌ⣿
1¡¢JVM³õʼ»¯²½Öè £¿ 2¡¢Àà³õʼ»¯Ê±»ú £¿3¡¢Äļ¸ÖÖÇé¿öÏ£¬JavaÐéÄâ»ú½«½áÊøÉúÃüÖÜÆÚ£¿
´ð°¸²Î¿¼ÕâÆªÎÄÕÂJVM£¨1£©£ºJava ÀàµÄ¼ÓÔØ»úÖÆ
Àà¼ÓÔØÆ÷

1.Æô¶¯Àà¼ÓÔØÆ÷£ºBootstrap ClassLoader£¬¸ºÔð¼ÓÔØ´æ·ÅÔÚJDK\jre\lib(JDK´ú±íJDKµÄ°²×°Ä¿Â¼£¬ÏÂͬ)Ï£¬»ò±»-Xbootclasspath²ÎÊýÖ¸¶¨µÄ·¾¶Öе쬲¢ÇÒÄܱ»ÐéÄâ»úʶ±ðµÄÀà¿â
2.À©Õ¹Àà¼ÓÔØÆ÷£ºExtension ClassLoader£¬¸Ã¼ÓÔØÆ÷ÓÉsun.misc.Launcher$ExtClassLoaderʵÏÖ£¬Ëü¸ºÔð¼ÓÔØDK\jre\lib\extĿ¼ÖУ¬»òÕßÓÉjava.ext.dirsϵͳ±äÁ¿Ö¸¶¨µÄ·¾¶ÖеÄËùÓÐÀà¿â£¨Èçjavax.*¿ªÍ·µÄÀࣩ£¬¿ª·¢Õß¿ÉÒÔÖ±½ÓʹÓÃÀ©Õ¹Àà¼ÓÔØÆ÷¡£
3.Ó¦ÓóÌÐòÀà¼ÓÔØÆ÷£ºApplication ClassLoader£¬¸ÃÀà¼ÓÔØÆ÷ÓÉsun.misc.Launcher$AppClassLoaderÀ´ÊµÏÖ£¬Ëü¸ºÔð¼ÓÔØÓû§Àà·¾¶£¨ClassPath£©ËùÖ¸¶¨µÄÀ࣬¿ª·¢Õß¿ÉÒÔÖ±½ÓʹÓøÃÀà¼ÓÔØÆ÷
Àà¼ÓÔØ»úÖÆ
1.È«Å̸ºÔ𣬵±Ò»¸öÀà¼ÓÔØÆ÷¸ºÔð¼ÓÔØÄ³¸öClassʱ£¬¸ÃClassËùÒÀÀµµÄºÍÒýÓÃµÄÆäËûClassÒ²½«ÓɸÃÀà¼ÓÔØÆ÷¸ºÔðÔØÈ룬³ý·ÇÏÔʾʹÓÃÁíÍâÒ»¸öÀà¼ÓÔØÆ÷À´ÔØÈë
2.¸¸ÀàίÍУ¬ÏÈÈø¸Àà¼ÓÔØÆ÷ÊÔͼ¼ÓÔØ¸ÃÀֻ࣬ÓÐÔÚ¸¸Àà¼ÓÔØÆ÷ÎÞ·¨¼ÓÔØ¸ÃÀàʱ²Å³¢ÊÔ´Ó×Ô¼ºµÄÀà·¾¶ÖмÓÔØ¸ÃÀà
3.»º´æ»úÖÆ£¬»º´æ»úÖÆ½«»á±£Ö¤ËùÓмÓÔØ¹ýµÄClass¶¼»á±»»º´æ£¬µ±³ÌÐòÖÐÐèҪʹÓÃij¸öClassʱ£¬Àà¼ÓÔØÆ÷ÏÈ´Ó»º´æÇøÑ°ÕÒ¸ÃClass£¬Ö»Óлº´æÇø²»´æÔÚ£¬ÏµÍ³²Å»á¶ÁÈ¡¸ÃÀà¶ÔÓ¦µÄ¶þ½øÖÆÊý¾Ý£¬²¢½«Æäת»»³ÉClass¶ÔÏ󣬴æÈ뻺´æÇø¡£Õâ¾ÍÊÇΪʲôÐÞ¸ÄÁËClassºó£¬±ØÐëÖØÆôJVM£¬³ÌÐòµÄÐ޸IJŻáÉúЧ
jvmÄÚ´æ½á¹¹
Ö÷Òª¹Ø×¢µã£º
1.jvmÄÚ´æ½á¹¹¶¼ÊÇʲô
2.¶ÔÏó·ÖÅ乿Ôò
jvmÄÚ´æ½á¹¹

·½·¨ÇøºÍ¶ÔÊÇËùÓÐÏ̹߳²ÏíµÄÄÚ´æÇøÓò£»¶øjavaÕ»¡¢±¾µØ·½·¨Õ»ºÍ³ÌÐòÔ±¼ÆÊýÆ÷ÊÇÔËÐÐÊÇÏß³Ì˽ÓеÄÄÚ´æÇøÓò¡£
1.Java¶Ñ£¨Heap£©,ÊÇJavaÐéÄâ»úËù¹ÜÀíµÄÄÚ´æÖÐ×î´óµÄÒ»¿é¡£Java¶ÑÊDZ»ËùÓÐÏ̹߳²ÏíµÄÒ»¿éÄÚ´æÇøÓò£¬ÔÚÐéÄâ»úÆô¶¯Ê±´´½¨¡£´ËÄÚ´æÇøÓòµÄΨһĿµÄ¾ÍÊÇ´æ·Å¶ÔÏóʵÀý£¬¼¸ºõËùÓеĶÔÏóʵÀý¶¼ÔÚÕâÀï·ÖÅäÄÚ´æ¡£
2.·½·¨Çø£¨Method Area£©,·½·¨Çø£¨Method Area£©ÓëJava¶ÑÒ»Ñù£¬ÊǸ÷¸öÏ̹߳²ÏíµÄÄÚ´æÇøÓò£¬ËüÓÃÓÚ´æ´¢Òѱ»ÐéÄâ»ú¼ÓÔØµÄÀàÐÅÏ¢¡¢³£Á¿¡¢¾²Ì¬±äÁ¿¡¢¼´Ê±±àÒëÆ÷±àÒëºóµÄ´úÂëµÈÊý¾Ý¡£
3.³ÌÐò¼ÆÊýÆ÷£¨Program Counter Register£©,³ÌÐò¼ÆÊýÆ÷£¨Program
Counter Register£©ÊÇÒ»¿é½ÏСµÄÄÚ´æ¿Õ¼ä£¬ËüµÄ×÷ÓÿÉÒÔ¿´×öÊǵ±Ç°Ïß³ÌËùÖ´ÐеÄ×Ö½ÚÂëµÄÐкÅָʾÆ÷¡£
4.JVMÕ»£¨JVM Stacks£©,Óë³ÌÐò¼ÆÊýÆ÷Ò»Ñù£¬JavaÐéÄâ»úÕ»£¨Java
Virtual Machine Stacks£©Ò²ÊÇÏß³Ì˽Óеģ¬ËüµÄÉúÃüÖÜÆÚÓëÏß³ÌÏàͬ¡£ÐéÄâ»úÕ»ÃèÊöµÄÊÇJava·½·¨Ö´ÐеÄÄÚ´æÄ£ÐÍ£ºÃ¿¸ö·½·¨±»Ö´ÐеÄʱºò¶¼»áͬʱ´´½¨Ò»¸öÕ»Ö¡£¨Stack
Frame£©ÓÃÓÚ´æ´¢¾Ö²¿±äÁ¿±í¡¢²Ù×÷Õ»¡¢¶¯Ì¬Á´½Ó¡¢·½·¨³ö¿ÚµÈÐÅÏ¢¡£Ã¿Ò»¸ö·½·¨±»µ÷ÓÃÖ±ÖÁÖ´ÐÐÍê³ÉµÄ¹ý³Ì£¬¾Í¶ÔÓ¦×ÅÒ»¸öÕ»Ö¡ÔÚÐéÄâ»úÕ»ÖдÓÈëÕ»µ½³öÕ»µÄ¹ý³Ì¡£
5.±¾µØ·½·¨Õ»£¨Native Method Stacks£©,±¾µØ·½·¨Õ»£¨Native
Method Stacks£©ÓëÐéÄâ»úÕ»Ëù·¢»ÓµÄ×÷ÓÃÊǷdz£ÏàËÆµÄ£¬ÆäÇø±ð²»¹ýÊÇÐéÄâ»úջΪÐéÄâ»úÖ´ÐÐJava·½·¨£¨Ò²¾ÍÊÇ×Ö½ÚÂ룩·þÎñ£¬¶ø±¾µØ·½·¨Õ»ÔòÊÇΪÐéÄâ»úʹÓõ½µÄNative·½·¨·þÎñ¡£
¶ÔÏó·ÖÅ乿Ôò
1.¶ÔÏóÓÅÏÈ·ÖÅäÔÚEdenÇø£¬Èç¹ûEdenÇøÃ»ÓÐ×ã¹»µÄ¿Õ¼äʱ£¬ÐéÄâ»úÖ´ÐÐÒ»´ÎMinor
GC¡£
2.´ó¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú£¨´ó¶ÔÏóÊÇÖ¸ÐèÒª´óÁ¿Á¬ÐøÄÚ´æ¿Õ¼äµÄ¶ÔÏ󣩡£ÕâÑù×öµÄÄ¿µÄÊDZÜÃâÔÚEdenÇøºÍÁ½¸öSurvivorÇøÖ®¼ä·¢Éú´óÁ¿µÄÄڴ濽±´£¨ÐÂÉú´ú²ÉÓø´ÖÆËã·¨ÊÕ¼¯Äڴ棩¡£
3.³¤ÆÚ´æ»îµÄ¶ÔÏó½øÈëÀÏÄê´ú¡£ÐéÄâ»úΪÿ¸ö¶ÔÏó¶¨ÒåÁËÒ»¸öÄêÁ伯ÊýÆ÷£¬Èç¹û¶ÔÏó¾¹ýÁË1´ÎMinor
GCÄÇô¶ÔÏó»á½øÈëSurvivorÇø£¬Ö®ºóÿ¾¹ýÒ»´ÎMinor GCÄÇô¶ÔÏóµÄÄêÁä¼Ó1£¬ÖªµÀ´ïµ½·§Öµ¶ÔÏó½øÈëÀÏÄêÇø¡£
4.¶¯Ì¬Åж϶ÔÏóµÄÄêÁä¡£Èç¹ûSurvivorÇøÖÐÏàͬÄêÁäµÄËùÓжÔÏó´óСµÄ×ܺʹóÓÚSurvivor¿Õ¼äµÄÒ»°ë£¬ÄêÁä´óÓÚ»òµÈÓÚ¸ÃÄêÁäµÄ¶ÔÏó¿ÉÒÔÖ±½Ó½øÈëÀÏÄê´ú¡£
5.¿Õ¼ä·ÖÅäµ£±£¡£Ã¿´Î½øÐÐMinor GCʱ£¬JVM»á¼ÆËãSurvivorÇøÒÆÖÁÀÏÄêÇøµÄ¶ÔÏóµÄƽ¾ù´óС£¬Èç¹ûÕâ¸öÖµ´óÓÚÀÏÄêÇøµÄÊ£ÓàÖµ´óСÔò½øÐÐÒ»´ÎFull
GC£¬Èç¹ûСÓÚ¼ì²éHandlePromotionFailureÉèÖã¬Èç¹ûtrueÔòÖ»½øÐÐMonitor
GC,Èç¹ûfalseÔò½øÐÐFull GC¡£
ÈçºÎͨ¹ý²ÎÊýÀ´¿ØÖƸö¸÷¸öÄÚ´æÇøÓò
²Î¿¼´ËÎÄÕ£ºJVM£¨2£©£ºJVMÄÚ´æ½á¹¹
GCËã·¨ À¬»ø»ØÊÕ
Ö÷Òª¹Ø×¢µã£º
1.¶ÔÏó´æ»îÅжÏ
2.GCËã·¨
3.À¬»ø»ØÊÕÆ÷
¶ÔÏó´æ»îÅжÏ
Åж϶ÔÏóÊÇ·ñ´æ»îÒ»°ãÓÐÁ½ÖÖ·½Ê½£º
1.ÒýÓüÆÊý£ºÃ¿¸ö¶ÔÏóÓÐÒ»¸öÒýÓüÆÊýÊôÐÔ£¬ÐÂÔöÒ»¸öÒýÓÃʱ¼ÆÊý¼Ó1£¬ÒýÓÃÊÍ·Åʱ¼ÆÊý¼õ1£¬¼ÆÊýΪ0ʱ¿ÉÒÔ»ØÊÕ¡£´Ë·½·¨¼òµ¥£¬ÎÞ·¨½â¾ö¶ÔÏóÏ໥ѻ·ÒýÓõÄÎÊÌâ¡£
2.¿É´ïÐÔ·ÖÎö£¨Reachability Analysis£©£º´ÓGC
Roots¿ªÊ¼ÏòÏÂËÑË÷£¬ËÑË÷Ëù×ß¹ýµÄ·¾¶³ÆÎªÒýÓÃÁ´¡£µ±Ò»¸ö¶ÔÏóµ½GC RootsûÓÐÈκÎÒýÓÃÁ´ÏàÁ¬Ê±£¬ÔòÖ¤Ã÷´Ë¶ÔÏóÊDz»¿ÉÓõ쬲»¿É´ï¶ÔÏó¡£
GCËã·¨
GC×î»ù´¡µÄËã·¨ÓÐÈýÖÖ£º±ê¼Ç -Çå³ýËã·¨¡¢¸´ÖÆËã·¨¡¢±ê¼Ç-ѹËõËã·¨£¬ÎÒÃdz£ÓõÄÀ¬»ø»ØÊÕÆ÷Ò»°ã¶¼²ÉÓ÷ִúÊÕ¼¯Ëã·¨¡£
1.±ê¼Ç -Çå³ýËã·¨£¬¡°±ê¼Ç-Çå³ý¡±£¨Mark-Sweep£©Ëã·¨£¬ÈçËüµÄÃû×ÖÒ»Ñù£¬Ëã·¨·ÖΪ¡°±ê¼Ç¡±ºÍ¡°Çå³ý¡±Á½¸ö½×¶Î£ºÊ×Ïȱê¼Ç³öËùÓÐÐèÒª»ØÊյĶÔÏó£¬ÔÚ±ê¼ÇÍê³Éºóͳһ»ØÊÕµôËùÓб»±ê¼ÇµÄ¶ÔÏó¡£
2.¸´ÖÆËã·¨£¬¡°¸´ÖÆ¡±£¨Copying£©µÄÊÕ¼¯Ëã·¨£¬Ëü½«¿ÉÓÃÄÚ´æ°´ÈÝÁ¿»®·ÖΪ´óСÏàµÈµÄÁ½¿é£¬Ã¿´ÎֻʹÓÃÆäÖеÄÒ»¿é¡£µ±ÕâÒ»¿éµÄÄÚ´æÓÃÍêÁË£¬¾Í½«»¹´æ»î×ŵĶÔÏó¸´ÖƵ½ÁíÍâÒ»¿éÉÏÃæ£¬È»ºóÔÙ°ÑÒÑʹÓùýµÄÄÚ´æ¿Õ¼äÒ»´ÎÇåÀíµô¡£
3.±ê¼Ç-ѹËõËã·¨£¬±ê¼Ç¹ý³ÌÈÔÈ»Óë¡°±ê¼Ç-Çå³ý¡±Ëã·¨Ò»Ñù£¬µ«ºóÐø²½Öè²»ÊÇÖ±½Ó¶Ô¿É»ØÊÕ¶ÔÏó½øÐÐÇåÀí£¬¶øÊÇÈÃËùÓдæ»îµÄ¶ÔÏó¶¼ÏòÒ»¶ËÒÆ¶¯£¬È»ºóÖ±½ÓÇåÀíµô¶Ë±ß½çÒÔÍâµÄÄÚ´æ
4.·Ö´úÊÕ¼¯Ëã·¨£¬¡°·Ö´úÊÕ¼¯¡±£¨Generational Collection£©Ëã·¨£¬°ÑJava¶Ñ·ÖΪÐÂÉú´úºÍÀÏÄê´ú£¬ÕâÑù¾Í¿ÉÒÔ¸ù¾Ý¸÷¸öÄê´úµÄÌØµã²ÉÓÃ×îÊʵ±µÄÊÕ¼¯Ëã·¨¡£
À¬»ø»ØÊÕÆ÷
1.SerialÊÕ¼¯Æ÷£¬´®ÐÐÊÕ¼¯Æ÷ÊÇ×î¹ÅÀÏ£¬×îÎȶ¨ÒÔ¼°Ð§ÂʸߵÄÊÕ¼¯Æ÷£¬¿ÉÄÜ»á²úÉú½Ï³¤µÄÍ£¶Ù£¬Ö»Ê¹ÓÃÒ»¸öÏß³ÌÈ¥»ØÊÕ¡£
2.ParNewÊÕ¼¯Æ÷£¬ParNewÊÕ¼¯Æ÷Æäʵ¾ÍÊÇSerialÊÕ¼¯Æ÷µÄ¶àḬ̈߳汾¡£
3.ParallelÊÕ¼¯Æ÷£¬Parallel ScavengeÊÕ¼¯Æ÷ÀàËÆParNewÊÕ¼¯Æ÷£¬ParallelÊÕ¼¯Æ÷¸ü¹Ø×¢ÏµÍ³µÄÍÌÍÂÁ¿¡£
4.Parallel Old ÊÕ¼¯Æ÷£¬Parallel OldÊÇParallel
ScavengeÊÕ¼¯Æ÷µÄÀÏÄê´ú°æ±¾£¬Ê¹ÓöàÏ̺߳͡°±ê¼Ç£ÕûÀí¡±Ëã·¨
5.CMSÊÕ¼¯Æ÷£¬CMS£¨Concurrent Mark Sweep£©ÊÕ¼¯Æ÷ÊÇÒ»ÖÖÒÔ»ñÈ¡×î¶Ì»ØÊÕÍ£¶Ùʱ¼äΪĿ±êµÄÊÕ¼¯Æ÷¡£
6.G1ÊÕ¼¯Æ÷£¬G1 (Garbage-First)ÊÇÒ»¿îÃæÏò·þÎñÆ÷µÄÀ¬»øÊÕ¼¯Æ÷,Ö÷ÒªÕë¶ÔÅ䱸¶à¿Å´¦ÀíÆ÷¼°´óÈÝÁ¿ÄÚ´æµÄ»úÆ÷.
ÒÔ¼«¸ß¸ÅÂÊÂú×ãGCÍ£¶Ùʱ¼äÒªÇóµÄͬʱ,»¹¾ß±¸¸ßÍÌÍÂÁ¿ÐÔÄÜÌØÕ÷
GCËã·¨ºÍÀ¬»ø»ØÊÕÆ÷Ë㷨ͼ½âÒÔ¼°¸üÏêϸÄÚÈݲο¼JVM£¨3£©£ºJava GCËã·¨ À¬»øÊÕ¼¯Æ÷
GC·ÖÎö ÃüÁîµ÷ÓÅ
Ö÷Òª¹Ø×¢µã£º
1.GCÈÕÖ¾·ÖÎö
2.µ÷ÓÅÃüÁî
3.µ÷ÓŹ¤¾ß
GCÈÕÖ¾·ÖÎö
ժ¼GCÈÕÖ¾Ò»²¿·Ö£¨Ç°²¿·ÖΪÄêÇá´úgc»ØÊÕ£»ºó²¿·ÖΪfull gc»ØÊÕ£©£º
2016-07-05T10:43:18.093+0800:
25.395: [GC [PSYoungGen: 274931K->10738K(274944K)]
371093K->147186K(450048K), 0.0668480 secs]
[Times: user=0.17 sys=0.08, real=0.07 secs]
2016-07-05T10:43:18.160+0800: 25.462: [Full
GC [PSYoungGen: 10738K->0K(274944K)] [ParOldGen:
136447K->140379K(302592K)] 147186K->140379K(577536K)
[PSPermGen: 85411K->85376K(171008K)], 0.6763541
secs] [Times: user=1.75 sys=0.02, real=0.68
secs]
|
ͨ¹ýÉÏÃæÈÕÖ¾·ÖÎöµÃ³ö£¬PSYoungGen¡¢ParOldGen¡¢PSPermGenÊôÓÚParallelÊÕ¼¯Æ÷¡£ÆäÖÐPSYoungGen±íʾgc»ØÊÕǰºóÄêÇá´úµÄÄÚ´æ±ä»¯£»ParOldGen±íʾgc»ØÊÕǰºóÀÏÄê´úµÄÄÚ´æ±ä»¯£»PSPermGen±íʾgc»ØÊÕǰºóÓÀ¾ÃÇøµÄÄÚ´æ±ä»¯¡£young
gc Ö÷ÒªÊÇÕë¶ÔÄêÇá´ú½øÐÐÄÚ´æ»ØÊÕ±È½ÏÆµ·±£¬ºÄʱ¶Ì£»full gc »á¶ÔÕû¸ö¶ÑÄÚ´æ½øÐлسǣ¬ºÄʱ³¤£¬Òò´ËÒ»°ã¾¡Á¿¼õÉÙfull
gcµÄ´ÎÊý
young gc ÈÕÖ¾:

Full GCÈÕÖ¾:

µ÷ÓÅÃüÁî
Sun JDK¼à¿ØºÍ¹ÊÕÏ´¦ÀíÃüÁîÓÐjps jstat jmap jhat jstack jinfo
1.jps£¬JVM Process Status Tool,ÏÔʾָ¶¨ÏµÍ³ÄÚËùÓеÄHotSpotÐéÄâ»ú½ø³Ì¡£
2.jstat£¬JVM statistics MonitoringÊÇÓÃÓÚ¼àÊÓÐéÄâ»úÔËÐÐʱ״̬ÐÅÏ¢µÄÃüÁËü¿ÉÒÔÏÔʾ³öÐéÄâ»ú½ø³ÌÖеÄÀà×°ÔØ¡¢ÄÚ´æ¡¢À¬»øÊÕ¼¯¡¢JIT±àÒëµÈÔËÐÐÊý¾Ý¡£
3.jmap£¬JVM Memory MapÃüÁîÓÃÓÚÉú³Éheap dumpÎļþ
4.jhat£¬JVM Heap Analysis ToolÃüÁîÊÇÓëjmap´îÅäʹÓã¬ÓÃÀ´·ÖÎöjmapÉú³ÉµÄdump£¬jhatÄÚÖÃÁËÒ»¸ö΢Ð͵ÄHTTP/HTML·þÎñÆ÷£¬Éú³ÉdumpµÄ·ÖÎö½á¹ûºó£¬¿ÉÒÔÔÚä¯ÀÀÆ÷Öв鿴
5.jstack£¬ÓÃÓÚÉú³ÉjavaÐéÄâ»úµ±Ç°Ê±¿ÌµÄÏ߳̿ìÕÕ¡£
6.jinfo£¬JVM Configuration info Õâ¸öÃüÁî×÷ÓÃÊÇʵʱ²é¿´ºÍµ÷ÕûÐéÄâ»úÔËÐвÎÊý¡£
ÏêϸµÄÃüÁîʹÓòο¼ÕâÀïJVM£¨4£©£ºJvmµ÷ÓÅ-ÃüÁîÆª
µ÷ÓŹ¤¾ß
³£Óõ÷ÓŹ¤¾ß·ÖΪÁ½Àà,jdk×Ô´ø¼à¿Ø¹¤¾ß£ºjconsoleºÍjvisualvm£¬µÚÈý·½ÓУºMAT(Memory
Analyzer Tool)¡¢GChisto¡£
1.jconsole£¬Java Monitoring and Management
ConsoleÊÇ´Ójava5¿ªÊ¼£¬ÔÚJDKÖÐ×Ô´øµÄjava¼à¿ØºÍ¹ÜÀí¿ØÖÆÌ¨£¬ÓÃÓÚ¶ÔJVMÖÐÄڴ棬Ï̺߳ÍÀàµÈµÄ¼à¿Ø
2.jvisualvm£¬jdk×Ô´øÈ«Äܹ¤¾ß£¬¿ÉÒÔ·ÖÎöÄÚ´æ¿ìÕÕ¡¢Ï߳̿ìÕÕ£»¼à¿ØÄÚ´æ±ä»¯¡¢GC±ä»¯µÈ¡£
3.MAT£¬Memory Analyzer Tool£¬Ò»¸ö»ùÓÚEclipseµÄÄÚ´æ·ÖÎö¹¤¾ß£¬ÊÇÒ»¸ö¿ìËÙ¡¢¹¦ÄܷḻµÄJava
heap·ÖÎö¹¤¾ß£¬Ëü¿ÉÒÔ°ïÖúÎÒÃDzéÕÒÄÚ´æÐ¹Â©ºÍ¼õÉÙÄÚ´æÏûºÄ
4.GChisto£¬Ò»¿îרҵ·ÖÎögcÈÕÖ¾µÄ¹¤¾ß |