Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
JVM¡ª¡ªJavaÐéÄâ»ú¼Ü¹¹
 
×÷ÕߣºSEU_Calvin
  2477  次浏览      28
 2020-2-6
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½²½âJVM½á¹¹Í¼ £¬ClassLoader£¬Ö´ÐÐÒýÇæ£¬Runtime DataArea£¬±¾µØ·½·¨Õ»£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼­ÍƼö

JavaÐéÄâ»ú£¨Java virtualmachine£©ÊµÏÖÁËJavaÓïÑÔ×îÖØÒªµÄÌØÕ÷£º¼´Æ½Ì¨ÎÞ¹ØÐÔ¡£

ƽ̨ÎÞ¹ØÐÔÔ­Àí£º±àÒëºóµÄJava³ÌÐò£¨.classÎļþ£©ÓÉJVMÖ´ÐС£JVMÆÁ±ÎÁËÓë¾ßÌåÆ½Ì¨Ïà¹ØµÄÐÅÏ¢£¬Ê¹³ÌÐò¿ÉÒÔÔÚ¶àÖÖÆ½Ì¨Éϲ»¼ÓÐ޸ĵØÔËÐС£JavaÐéÄâ»úÔÚÖ´ÐÐ×Ö½ÚÂëʱ£¬°Ñ×Ö½ÚÂë½âÊͳɾßÌåÆ½Ì¨ÉϵĻúÆ÷Ö¸ÁîÖ´ÐС£Òò´ËʵÏÖJavaƽ̨ÎÞ¹ØÐÔ¡£

1. JVM½á¹¹Í¼

JVM =Àà¼ÓÔØÆ÷classloader +Ö´ÐÐÒýÇæexecutionengine +ÔËÐÐʱÊý¾ÝÇøÓòruntime data area

Ê×ÏÈJavaÔ´´úÂëÎļþ±»Java±àÒëÆ÷±àÒëΪ×Ö½ÚÂëÎļþ£¬È»ºóJVMÖеÄÀà¼ÓÔØÆ÷¼ÓÔØÍê±ÏÖ®ºó£¬½»ÓÉJVMÖ´ÐÐÒýÇæÖ´ÐС£ÔÚÕû¸ö³ÌÐòÖ´Ðйý³ÌÖУ¬JVMÖеÄÔËÐÐʱÊý¾ÝÇø£¨Äڴ棩»áÓÃÀ´´æ´¢³ÌÐòÖ´ÐÐÆÚ¼äÐèÒªÓõ½µÄÊý¾ÝºÍÏà¹ØÐÅÏ¢¡£

Òò´Ë£¬ÔÚJavaÖÐÎÒÃdz£³£Ëµµ½µÄÄÚ´æ¹ÜÀí¾ÍÊÇÕë¶ÔÕâ¶Î¿Õ¼ä½øÐйÜÀí£¨ÈçºÎ·ÖÅäºÍ»ØÊÕÄÚ´æ¿Õ¼ä£©¡£

2. ClassLoader

Classloader°ÑÓ²ÅÌÉϵÄclassÎļþ¼ÓÔØµ½JVMÖеÄÔËÐÐʱÊý¾ÝÇøÓò£¬µ«ÊÇËü²»¸ºÔðÕâ¸öÀàÎļþÄÜ·ñÖ´ÐУ¬¶øÕâ¸öÊÇÖ´ÐÐÒýÇæ¸ºÔðµÄ¡£

ÏÞÓÚÆª·ù£¬Àà¼ÓÔØÆ÷µÄ×éÖ¯½á¹¹£¬¼ÓÔØÀàµÄ»úÖÆÔ­ÀíµÈ»áÔÚJVM¡ª¡ªÀà¼ÓÔØÆ÷×ܽáÒ»ÎÄÖÐÃèÊö¡£

Ë«Ç×ίÅÉÄ£ÐÍÒÔ¼°×Ô¶¨ÒåÀà¼ÓÔØÆ÷»áÔÚJVM¡ª¡ª×Ô¶¨ÒåÀà¼ÓÔØÆ÷Ò»ÎÄÖÐÃèÊö¡£

3. Ö´ÐÐÒýÇæ

×÷ÓãºÖ´ÐÐ×Ö½ÚÂ룬»òÕßÖ´Ðб¾µØ·½·¨¡£

4. Runtime DataArea

JVMÔÚÔËÐÐÆÚ¼ä£¬ÔÚÔËÐÐʱÊý¾ÝÇø¶ÔJVMÄÚ´æ¿Õ¼äµÄ»®·ÖºÍ·ÖÅ䣬»®·ÖΪÁËÒÔϼ¸¸öÇøÓòÀ´´æ´¢¡£

£¨Í¼×¢£ºJDK1.7ÒѾ­°Ñ³£Á¿³Ø×ªÒƵ½¶ÑÀïÃæÁË£¡£©

PC¼ÆÊýÆ÷£¨The PCRegister£©

£¨1£©Ã¿Ò»¸öJavaÏ̶߳¼ÓÐÒ»¸öPC¼Ä´æÆ÷£¬ÓÃÒԼǼ±ÈÈçÔÚÏß³ÌÇл»»ØÀ´ºó»Ö¸´µ½ÕýÈ·µÄÖ´ÐÐλÖá£

£¨2£©Èç¸ÃÏß³ÌÕýÔÚÖ´ÐÐÒ»¸öJava·½·¨£¬Ôò¼ÆÊýÆ÷¼Ç¼µÄÊÇÕýÔÚÖ´ÐеÄÐéÄâ»ú×Ö½ÚÂëµØÖ·£¬ÈçÖ´ÐÐnative·½·¨£¬Ôò¼ÆÊýÆ÷ֵΪ¿Õ¡£

£¨3£©´ËÄÚ´æÇøÓòÊÇΨһһ¸öÔÚJVMÖÐûÓй涨ÈκÎOutOfMemoryErrorÇé¿öµÄÇøÓò¡£

JVMÕ»£¨Java Virtual MachineStacks£©

£¨1£©JVMÕ»ÊÇÏß³Ì˽Óе쬲¢ÇÒÉúÃüÖÜÆÚÓëÏß³ÌÏàͬ¡£²¢ÇÒµ±Ïß³ÌÔËÐÐÍê±Ïºó£¬ÏàÓ¦ÄÚ´æÒ²¾Í±»×Ô¶¯»ØÊÕ¡£

£¨2£©Õ»ÀïÃæ´æ·ÅµÄÔªËØ½ÐÕ»Ö¡£¬Ã¿¸ö·½·¨´Óµ÷Óõ½Ö´ÐнáÊø£¬ÆäʵÊǶÔÓ¦Ò»¸öÕ»Ö¡µÄÈëÕ»ºÍ³öÕ»¡£Õ»Ö¡ÓÃÓÚ´æ´¢Ö´Ðз½·¨Ê±µÄһЩÊý¾Ý£¬Èç¾Ö²¿±äÁ¿±í¡¢²Ù×÷ÊýÕ»£¨Ö´ÐÐÒýÇæ¼ÆËãʱÐèÒª£©£¬·½·¨³ö¿ÚµÈµÈ¡£

£¨3£©Õâ¸öÇøÓò¿ÉÄÜÓÐÁ½ÖÖÒì³££ºÈç¹ûÏß³ÌÇëÇóµÄÕ»Éî¶È´óÓÚÐéÄâ»úËùÔÊÐíµÄÉî¶È£¬½«Å׳öStackOverflowErrorÒì³££¨È磺½«Ò»¸öº¯Êý·´¸´µÝ¹é×Ô¼º£¬×îÖÕ»á³öÏÖÕâÖÖÒì³££©¡£Èç¹ûJVMÕ»¿ÉÒÔ¶¯Ì¬À©Õ¹£¨´ó²¿·ÖJVMÊÇ¿ÉÒԵģ©£¬µ±À©Õ¹Ê±ÎÞ·¨ÉêÇëµ½×ã¹»ÄÚ´æÔòÅ׳öOutOfMemoryErrorÒì³£¡£

±¾µØ·½·¨Õ»£¨Native Method Stacks£©

£¨1£©±¾µØ·½·¨Õ»ÓëJVMÕ»µÄ×÷ÓúÜÏàËÆ£¬ËûÃǵÄÇø±ðÔÚÓÚÐéÄâ»úÕ»ÊÇΪִÐÐJava´úÂë·½·¨·þÎñ£¬¶ø±¾µØ·½·¨Õ»ÊÇΪNative·½·¨·þÎñ¡£

£¨2£©ºÍJVMÕ»Ò»Ñù£¬Õâ¸öÇøÓòÒ²»áÅ׳öStackOverflowErrorºÍOutOfMemoryErrorÒì³£¡£

·½·¨Çø£¨Method Area£©

£¨1£©·½·¨ÇøÓòÊÇÈ«¾Ö¹²ÏíµÄ£¬±ÈÈçÿ¸öÏ̶߳¼¿ÉÒÔ·ÃÎÊͬһ¸öÀàµÄ¾²Ì¬±äÁ¿¡£ÔÚ·½·¨ÇøÖУ¬´æ´¢ÁËÒѱ»JVM¼ÓÔØµÄÀàµÄÐÅÏ¢¡¢¾²Ì¬±äÁ¿¡¢±àÒëÆ÷±àÒëºóµÄ´úÂëµÈ¡£È磬µ±³ÌÐòÖÐͨ¹ýgetName¡¢isInterfaceµÈ·½·¨À´»ñÈ¡ÐÅϢʱ£¬ÕâЩÊý¾ÝÀ´Ô´ÓÚ·½·¨Çø¡£

£¨2£©ÓÉÓÚʹÓ÷´Éä»úÖÆµÄÔ­Òò£¬ÐéÄâ»úºÜÄÑÍÆ²âÄĸöÀàÐÅÏ¢²»ÔÙʹÓã¬Òò´ËÕâ¿éÇøÓòµÄ»ØÊÕºÜÄÑ£¡ÁíÍ⣬¶ÔÕâ¿éÇøÓòÖ÷ÒªÊÇÕë¶Ô³£Á¿³Ø»ØÊÕ£¬ÖµµÃ×¢ÒâµÄÊÇJDK1.7ÒѾ­°Ñ³£Á¿³Ø×ªÒƵ½¶ÑÀïÃæÁË¡£

£¨3£©Í¬Ñù£¬µ±·½·¨ÇøÎÞ·¨Âú×ãÄÚ´æ·ÖÅäÐèÇóʱ£¬»áÅ׳öOutOfMemoryError¡£

ÔËÐÐʱ³£Á¿³Ø£¨Runtime Constant Pool£©

£¨1£©´æ·ÅÀàÖй̶¨µÄ³£Á¿ÐÅÏ¢¡¢·½·¨ÒýÓÃÐÅÏ¢µÈ£¬Æä¿Õ¼ä´Ó·½·¨ÇøÓò£¨JDK1.7ºóΪ¶Ñ¿Õ¼ä£©ÖзÖÅä¡£

£¨2£©ClassÎļþÖгýÁËÓÐÀàµÄ°æ±¾¡¢×ֶΡ¢·½·¨¡¢½Ó¿ÚµÈÃèÊöÐÅÏ¢Í⣬»¹ÓоÍÊdz£Á¿±í£¬ÓÃÓÚ´æ·Å±àÒëÆÚÒÑ¿ÉÖªµÄ³£Á¿£¬Õⲿ·ÖÄÚÈݽ«ÔÚÀà¼ÓÔØºó½øÈë·½·¨Çø£¨ÓÀ¾Ã´ú£©´æ·Å¡£µ«ÊÇJavaÓïÑÔ²¢²»ÒªÇó³£Á¿Ò»¶¨Ö»ÓбàÒëÆÚÔ¤ÖÃÈëClassµÄ³£Á¿±íµÄÄÚÈݲÅÄܽøÈë·½·¨Çø³£Á¿³Ø£¬ÔËÐÐÆÚ¼äÒ²¿É½«ÐÂÄÚÈÝ·ÅÈë³£Á¿³Ø£¨×îµäÐ͵ÄString.intern()·½·¨£©¡£

£¨3£©µ±³£Á¿³ØÎÞ·¨ÔÚÉêÇëµ½ÄÚ´æÊ±»áÅ׳öOutOfMemoryErrorÒì³££¬ÉÏÃæÒ²·ÖÎö¹ýÁË¡£

Java¶Ñ

£¨1£©Java¶ÑÊÇJVMËù¹ÜÀíµÄ×î´óµÄÒ»¿éÄÚ´æ¡£ËüÊDZ»ËùÓÐÏ̹߳²ÏíµÄÒ»¿éÄÚ´æÇøÓò£¬ÔÚÐéÄâ»úÆô¶¯Ê±´´½¨¡£

£¨2£©¼¸ºõËùÓеÄʵÀý¶ÔÏó¶¼ÊÇÔÚÕâ¿éÇøÓòÖдæ·Å¡££¨JIT±àÒëÆ÷Ã²ËÆ²»ÊÇÕâÑùµÄ£©¡£

£¨3£©Java¶ÑÊÇÀ¬»øÊÕ¼¯¹ÜÀíµÄÖ÷ÒªÕ½³¡¡£ËùÓÐJava¶Ñ¿ÉÒÔϸ·ÖΪ£ºÐÂÉú´úºÍÀÏÄê´ú¡£ÔÙϸÖ·־ÍÊǰÑÐÂÉú´ú·ÖΪ£ºEden¿Õ¼ä¡¢FromSurvivor¿Õ¼ä¡¢To Survivor¿Õ¼ä¡£JVM¾ßÌåµÄÀ¬»ø»ØÊÕ»úÖÆ×ܽáÇë²é¿´ÎÒµÄÁíÍâһƪJVM¡ª¡ªÄÚ´æ¹ÜÀíºÍÀ¬»ø»ØÊÕ¡£

£¨4£©¸ù¾ÝJavaÐéÄâ»ú¹æ·¶µÄ¹æ¶¨£¬Java¶Ñ¿ÉÒÔ´¦ÓÚÎïÀíÉϲ»Á¬ÐøµÄÄÚ´æ¿Õ¼äÖУ¬Ö»ÒªÂß¼­ÉÏÊÇÁ¬ÐøµÄ¼´¿É¡£

Èç¹ûÔÚ¶ÑÖÐûÓÐÄÚ´æÍê³ÉʵÀý·ÖÅ䣬²¢ÇÒ¶ÑÒ²ÎÞ·¨ÔÙÀ©Õ¹Ê±£¬½«»áÅ׳öOutOfMemoryErrorÒì³£¡£

5. ¶ÑºÍÕ»µÄÇø±ð

ÕâÊÇÒ»¸ö·Ç³£³£¼ûµÄÃæÊÔÌ⣬Ö÷Òª´ÓÒÔϼ¸¸ö·½ÃæÀ´»Ø´ð¡£

£¨1£©¸÷˾ÆäÖ°

×îÖ÷ÒªµÄÇø±ð¾ÍÊÇÕ»ÄÚ´æÓÃÀ´´æ´¢¾Ö²¿±äÁ¿ºÍ·½·¨µ÷ÓÃÐÅÏ¢¡£

¶ø¶ÑÄÚ´æÓÃÀ´´æ´¢JavaÖеĶÔÏó¡£ÎÞÂÛÊdzÉÔ±±äÁ¿¡¢¾Ö²¿±äÁ¿»¹ÊÇÀà±äÁ¿£¬ËüÃÇÖ¸ÏòµÄ¶ÔÏó¶¼´æ´¢ÔÚ¶ÑÄÚ´æÖС£

£¨2£©¿Õ¼ä´óС

Õ»µÄÄÚ´æÒªÔ¶Ô¶Ð¡ÓÚ¶ÑÄڴ棬Èç¹ûÄãʹÓõݹéµÄ»°£¬ÄÇôÄãµÄÕ»ºÜ¿ì¾Í»á³äÂú²¢²úÉúStackOverFlowError¡£

¹ØÓÚÈçºÎÉèÖöÑÕ»ÄÚ´æµÄ´óС£¬¿ÉÒԲ鿴JVM¡ª¡ªÄÚ´æ¹ÜÀíºÍÀ¬»ø»ØÊÕÖеÄÏà¹Ø½éÉÜ¡£

£¨3£©¶ÀÓл¹Êǹ²Ïí

Õ»ÄÚ´æ¹éÊôÓÚÏ̵߳Ä˽ÓÐÄڴ棬ÿ¸öÏ̶߳¼»áÓÐÒ»¸öÕ»Äڴ棬Æä´æ´¢µÄ±äÁ¿Ö»ÄÜÔÚÆäËùÊôÏß³ÌÖпɼû¡£

¶ø¶ÑÄÚ´æÖеĶÔÏó¶ÔËùÓÐÏ߳̿ɼû£¬¿ÉÒÔ±»ËùÓÐÏ̷߳ÃÎÊ¡£

£¨4£©Òì³£´íÎó

Èç¹ûÏß³ÌÇëÇóµÄÕ»Éî¶È´óÓÚÐéÄâ»úËùÔÊÐíµÄÉî¶È£¬½«Å׳öStackOverflowErrorÒì³£¡£

Èç¹ûJVMÕ»¿ÉÒÔ¶¯Ì¬À©Õ¹£¨´ó²¿·ÖJVMÊÇ¿ÉÒԵģ©£¬µ±À©Õ¹Ê±ÎÞ·¨ÉêÇëµ½×ã¹»ÄÚ´æÔòÅ׳öOutOfMemoryErrorÒì³£¡£

¶ø¶ÑÄÚ´æÃ»ÓпÉÓÃµÄ¿Õ¼ä´æ´¢Éú³ÉµÄ¶ÔÏó£¬JVM»áÅ׳öjava.lang.OutOfMemoryError¡£

 
   
2477 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö