±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚStormMa£¬Ö÷Òª½²½âÁËJVMµÄ×é³ÉºÍÔËÐÐÔÀí£¬JVMµÄͳһÊý¾Ý¸ñʽ¹æ·¶¡¢×Ö½ÚÂëÎļþ½á¹¹£¬JVM¹ØÓÚÄÚ´æµÄ¹ÜÀí¡£ |
|
ǰÑÔ
ÎÒÒ»Ö±³¢ÊÔ×ÅÓò»Ò»ÑùµÄÎÄ×ÖÀ´Ð´²©¿Í£¡ÔÒòºÜ¼òµ¥£¬Äã½²µÄ֪ʶÊéÉ϶¼ÓУ¬ÄÇôÿ¸öÈËΪʲô²»Ñ¡Ôñ¿´Êé¶øÑ¡Ôñ¿´ÄãµÄ²©ÎÄÀ´Ñ§Ï°ÄØ£¿ÒòΪÊéÉϵÄÄÚÈݶ¼ÊÇ´óÆ¬´óƬÃèÊöÐÔµÄÎÄ×Ö£¬¶ÔÓÚjvmÕâ¿éµÄ֪ʶ£¬ÓÖÊÇÒì³£¿ÝÔµ«ÓÖ²»Äܲ»Ñ§Ï°µÄÓ²¹ÇÍ·£¡ÕâÇ¡ºÃÒ²¾ÍÄÜ˵Ã÷Head
FirstϵÁеÄÊ鼮Ϊʲô±È½Ï»ðµÄÔÒò£¬Ã¿¸öÈ˽ÓÊÕͼÐÎ֪ʶµÄËÙ¶ÈÍùÍù±ÈÎÄ×ÖÐԵĶ«Î÷Òª¿ìºÜ¶à¡£½ñºóÎÒÒ²»á³¢ÊÔÓÃ×Ô¼ºµÄÌØÉ«À´Ð´²©¿Í£¬¾¡Á¿ÄÜÒýÆð¶ÁÕßµÄÐËȤ£¬ÄÜ´ÓÖÐѧµ½¶«Î÷£¬ÎÒ¾ÍÖª×ãÁË£¡
½ñÌìµÄÒ»µãÒ»µÎ̽¾¿JVMϵÁУ¬´òË㸴ϰһÏÂjvmÄÚ´æ½á¹¹£¡ÖÁÓÚѧϰÕâ¿é֪ʶµÄºÃ´¦£¿Ò»£¬´ÓÃæÊԵĽǶÈÀ´¿´£¬ÄãÁ˽âjvm£¬²¢ÇÒjava»ù´¡Ôúʵ£¬Äã²Å¸üÓоºÕùÁ¦(ÒòΪÎÒ±¾È˱¾¿Æ»¹Ã»±ÏÒµ£¬ËùÒÔ¿¼ÂÇÎÊÌâ¾³£´ÓÃæÊÔÕߵĽǶÈÀ´¿¼ÂÇ)¡£Æä¶þ£¬Ìá¸ßÄã¶ÔjavaµÄÀí½â£¬ÖªµÀÄã´´½¨µÄÿһ¸ö¶ÔÏó£¬Ã¿Ò»¸ö±äÁ¿£¬¶¼ÔÚʲôµØ·½£¬Èç¹û²»ÖªµÀÕâЩϡÀïºýÍ¿µÃд´úÂ룬×Ü»áÓÐÒ»Ìì»á¡±·³µ¡±µÄ£¡ºÃÁË£¬·Ï»°²»¶à˵ÁË£¬ÎÒÃÇ¿ªÊ¼ÕýÌâ°É£¡
¿ªÊ¼Ö®Ç°
JavaÓëC++Ö®¼äÓÐÒ»¶ÂÓÉÄڴ涯̬·ÖÅäºÍÀ¬»øÊÕ¼¯¼¼ÊõËùΧ³ÉµÄ¡±Ç½¡±, ǽÍâµÄÈËÏë½øÈ¥£¬Ç½ÄÚµÄÈËÏë³öÀ´¡£
»òÐíÄã¾³£¿´µ½StackOverFlowError£¬ OutOfMemoryErrorÎÞ´ÓÏÂÊÖ£¬ÒòΪÄãѹ¸ù²»ÖªµÀ£¬¾¿¾¹ÊÇʲô¶«Î÷Ôì³ÉÄڴ汬ÁË£¬µ±È»£¬ÄãÒ²ÎÞ·¨½â¾ö£¡
¾Ù¸ö¼òµ¥µÄÀý×Ó
public class test
{
private int f() {
f();
}
public static void main(String[] args) {
f();
}
} |
Õâ¸ö¼òµ¥µÄµÝ¹é£¬²»¶Ô£¬Ëü²»ËãÊǵݹ飬ÒòΪûÓÐÖÕÖ¹Ìõ¼þ£¬µ«ÊÇÄãÖªµÀËü×îÖջᱨʲô´íÎó£¬ÖªµÀΪʲô»á±¨Õâ¸ö´íÎóÂ𣿾¿¾¹ÊÇÄÇ¿éÄÚ´æ·¢ÉúÁË´íÎó?
Õâ¸öÎÊÌ⣬ÎÒÃÇÁôÔÚºóÃæ»Ø´ð£¬ÊÇÁôÔÚºóÃæÄã×Ô¼º½â´ð£¬¿´ÍêÕâÆª²©ÎÄ£¬²»ÓÃÎÒ˵£¬ÕâЩÎÊÌâÄã¶¼»áºÜÇå³þ£¡ÏàÐÅÎÒ£¡
Ä¿±ê
Äã¿ÉÄÜ»áºÃÆæ£¬Äã¿´ÍêÕâÆªÎÄÕÂÄãÄÜѧµ½Ê²Ã´?
Çå³þÄãµÄ¶ÔÏó»á±»·ÖÅäÔÚÄÄÀï(²»¾ø¶Ô)
Àí½âÄÄÐ©ÇøÓò¶ÔÏß³ÌÀ´ËµÊÇ˽ÓÐÇø£¬ÄÄÐ©ÇøÓòÊÇÏ̹߳²ÏíÇøÓò
ÖªµÀ·½·¨µ÷Ó÷¢ÉúÁËʲô£¿
¡
µÈµÈµÈ£¬Äã¿ÉÄÜ»¹»á½âÊÍÄãÒÔǰÓöµ½Ò»Ð©·ËÒÄËù˼µÄÎÊÌ⣡×ÜÖ®£¬ÄãÈç¹û֮ǰûÁ˽â¹ýÕâЩ֪ʶ£¬ÄÇôÕâЩ¶«Î÷¶ÔÄãÀ´Ëµ£¬¾ÍÊdzɳ¤£¡
ǽÄÚµÄÊÀ½ç
Äã¿ÉÄÜºÜºÃÆæ£¬Ç½ÄÚ¾¿¾¹ÊÇʲôÑù£¿½ÓÏÂÀ´¸ú×ÅÎÒһ̽¾¿¾¹

ÉÏͼ¾ÍÊÇjvm±È½ÏÏêϸµÄÄÚ´æ»®·Ö£¬ÏÂÃæÎÒÃÇÀ´°´Ïß³Ì˽Óй²ÏíÀ´»®·ÖjvmÄÚ´æÇø

ÏÂÃæÎÒÃÇÀ´×ÅÖØ½éÉÜÒ»ÏÂÕ⼸¿éÄÚ´æÇøÓò
³ÌÐò¼ÆÊýÆ÷(Program Counter Register)
ʲôÊdzÌÐò¼ÆÊýÆ÷ÄØ£¬Ñ§¹ý»ã±àµÄ¶¼ÖªµÀ£¬cs:ip×é³ÉµÄÎïÀíµØÖ·ÊÇÏÂÒ»ÌõÒªÖ´ÐеÄÖ¸ÁîµÄµØÖ·£¬À´°É£¡¿´Í¼

ÎÒÃÇ¿ÉÒÔºÜÇå³þµÄ¿´µ½£¬µ±Ç°cs:ipÖ¸ÏòµÄÄÚ´æµØÖ·Ç¡ºÃ¾ÍÊÇÎÒÃÇÒªÖ´ÐеÄÏÂÒ»ÌõÖ¸ÁîµÄλÖã¬Ç°ÃæÎÒÃÇͼÖÐ(°´Ïß³Ì˽Óй²Ïí»®·ÖjvmÄÚ´æµÄͼ)ÓÖ˵ÁË£¬³ÌÐò¼ÆÊýÆ÷ÊÇÏß³Ì˽Óеģ¬ÔÙÁªÏëÒ»ÏÂÎÒ¾Ùcs:ipµÄÀý×Ó£¬ÎÒÃÇ¿ÉÒÔºÜ×ÔÈ»µÄÏëµ½£¬³ÌÐò¼ÆÊýÆ÷Æäʵ¾ÍÊǼǼÏ̵߳±Ç°Ö´Ðе½ÁËÄÄÒ»ÌõÖ¸ÁÒòΪʲôҪ¼Ç¼Õâ¸öֵĨ£¿ÒòΪ£¬Èç¹ûÎÒÃÇÓкܶà¸öỊ̈߳¬Ïß³ÌÖ´ÐÐ˳ÐòÓÖÊDz»¿ÉÔ¤Áϵ쬼ÙÈçijһʱ¿ÌÎÒÃÇÔÚÖ´ÐÐÏß³ÌAÀïÃæµÄÖ¸ÁȻºóÏß³ÌBÓÖ»ñµÃÁËcpuµÄ×ÊÔ´£¬È¥Ö´ÐÐÈ¥Ïß³ÌBµÄÖ¸Á¼ÙÈçÔÙ¹ýÁËÒ»¶Îʱ¼äÖ®ºó£¬AÓÖ»ñµÃÁËcpuµÄ×ÊÔ´£¬Ïë³Ô»ØÍ·²Ý£¬´Ëʱ»Øµ½Ïß³ÌAÖ´ÐУ¬Ëü²»ÖªµÀÒªÖ´ÐÐÏß³ÌAµÄÄÄÌõÖ¸ÁÕâÊÇûÓгÌÐò¼ÆÊýÆ÷ËùÐγɵÄÞÏÞξÖÃæ£¬µ«ÊÇÓÐÁËÏß³Ì˽ÓеijÌÐò¼ÆÊýÆ÷£¬Õâ¸öÎÊÌâ¾Í²»´æÔÚÁË£¬Õâ¾ÍÊdzÌÐò¼ÆÊýÆ÷³öÏÖµÄÔÒò£¬ÒÔ¼°ËüµÄÓô¦£¬ÎÒÏëÄã¿´ÍêÕâ¶ÎÎÄ×Ö£¬Ó¦¸ÃÒѾ¶Ô³ÌÐò¼ÆÊýÆ÷Õâ¸ö¸ÅÄîÍêÈ«Àí½âÁË£¡
ÁíÍ⣬ÎÒÐèҪ˵Ã÷µÄÒ»µãÊÇ£¬³ÌÐò¼ÆÊýÆ÷ÊÇJavaÐéÄâ»ú¹æ·¶ÖÐΨһһ¸öûÓй涨ÈκÎÄÚ´æ´íÎóµÄÇøÓò£¡
ÐéÄâ»úÕ»(Vm Stack)
Õâ¿éÇøÓòÊǸÉɶµÄ£¿ÎªÉ¶Ò²ÊÇÏß³Ì˽Óеģ¿
ÐéÄâ»úÕ»ÃèÊöµÄÊÇJava·½·¨Ö´ÐеÄÄÚ´æÄ£ÐÍ
ÎÒÃÇÀ´½â¶ÁÕâ¾ä»°£¬ÎªÊ²Ã´ËµVm StackÊÇÃèÊöJava·½·¨Ö´ÐеÄÄÚ´æÄ£ÐÍÄØ£¿Æäʵ£º
ÿ¸ö·½·¨Ö´ÐеÄʱºò¶¼»á´´½¨Ò»¸öÕ»Ö¡(Stack Frame)µÄ¶«Î÷£¬Ñ§¹ýc/c++µÄÓ¦¸Ã¶¼¶ÔÕâ¸ö¸ÅÄîÊìϤ¡£Õ»Ö¡ÓÃÓÚ´æ´¢¾Ö²¿±äÁ¿±í¡¢²Ù×÷ÊýÕ»¡¢¶¯Ì¬Á´½Ó¡¢·½·¨³ö¿ÚÐÅÏ¢µÈ¡£Ã¿¸ö·½·¨´Óµ÷ÓÿªÊ¼µ½½áÊøµÄ¹ý³Ì£¬¶¼¶ÔÓ¦ÕâVm
StackÖеÄÈëÕ»³öÕ»µÄ¹ý³Ì£¡ÕâÒ²¾ÍÄܻشð¿ªÍ·ÎÒÃÇ¿´µ½µÄÄǸöÎÊÌâÁË£¬ºÜ¼òµ¥´íÎóÔÚµ¥Ïß³ÌÇé¿öÏ¿϶¨ÊÇStackOverFlowError£¬¶àÏß³ÌÏÂOutOfMemoryError(ÉÏͼÒѾдµÃºÜÇå³þÁË)
±ÈÈç
public void
test() {
String name = "stormma";
int age = 21;
} |
ÉÏÃæµÄÀý×ÓµÄage±äÁ¿ºÍnameÒýÓö¼ÊÇ´æ´¢ÔÚÐéÄâ»úÕ»µÄÕ»Ö¡ÀïÃæµÄ(ÒòΪÎÒÃÇÇ°ÃæËµ¹ýÁË£¬Ò»¸ö·½·¨´Ó¿ªÊ¼µ÷Óõ½½áÊøµ÷ÓõĹý³Ì¶¼¶ÔÓ¦×ÅÒ»¸öVm
Stack³öÕ»ÈëÕ»µÄ¹ý³Ì)¡£
ÎÒÃÇÇ°ÃæËµÁË£¬Õâ¿éÇøÓò´æ´¢Á˾ֲ¿±äÁ¿±í£¬²Ù×÷ÊýÕ»£¬¶¯Ì¬Á´½Ó£¬»¹Óз½·¨³ö¿ÚÐÅÏ¢µÈ£¬ÎÒÏëÄãÓ¦¸Ã±È½ÏºÃÆæÕ⼸¸ö¸ÅÄî¡£
¾Ö²¿±äÁ¿±í: ¾Ö²¿±äÁ¿±íÊÇÒ»×é±äÁ¿Öµ´æ´¢¿Õ¼ä£¬ÓÃÓÚ´æ·Å·½·¨²ÎÊýºÍ·½·¨ÄÚ²¿¶¨ÒåµÄ¾Ö²¿±äÁ¿£¬ÆäÖдæ·ÅµÄÊý¾ÝµÄÀàÐÍÊDZàÒëÆÚ¿ÉÖªµÄ¸÷ÖÖ»ù±¾Êý¾ÝÀàÐÍ¡¢¶ÔÏóÒýÓÃ(reference)ºÍ(returnAddress)ÀàÐÍ£¨ËüÖ¸ÏòÁËÒ»Ìõ×Ö½ÚÂëÖ¸ÁîµÄµØÖ·£©¡£¾Ö²¿±äÁ¿±íËùÐèµÄÄÚ´æ¿Õ¼äÔÚ±àÒëÆÚ¼äÍê³É¼ÆËãµÄ£¬¼´ÔÚJava³ÌÐò±»±àÒë³ÉClassÎļþʱ£¬¾ÍÈ·¶¨ÁËËùÐè·ÖÅäµÄ×î´ó¾Ö²¿±äÁ¿±íµÄÈÝÁ¿¡£µ±½øÈëÒ»¸ö·½·¨Ê±£¬Õâ¸ö·½·¨ÐèÒªÔÚÕ»ÖзÖÅä¶à´óµÄ¾Ö²¿±äÁ¿¿Õ¼äÊÇÍêȫȷ¶¨µÄ£¬ÔÚ·½·¨ÔËÐÐÆÚ¼ä²»»á¸Ä±ä¾Ö²¿±äÁ¿±íµÄ´óС¡£
²Ù×÷ÊýÕ»: ²Ù×÷ÊýÕ»ÓÖ³£±»³ÆÎª²Ù×÷Õ»£¬²Ù×÷ÊýÕ»µÄ×î´óÉî¶ÈÒ²ÊÇÔÚ±àÒëµÄʱºò¾ÍÈ·¶¨ÁË¡£32λÊý¾ÝÀàÐÍËùÕ¼µÄÕ»ÈÝÁ¿Îª1,
64λÊý¾ÝÀàÐÍËùÕ¼µÄÕ»ÈÝÁ¿Îª2¡£µ±Ò»¸ö·½·¨¿ªÊ¼Ö´ÐÐʱ£¬ËüµÄ²Ù×÷Õ»Êǿյģ¬ÔÚ·½·¨µÄÖ´Ðйý³ÌÖУ¬»áÓи÷ÖÖ×Ö½ÚÂëÖ¸Á±ÈÈ磺¼Ó²Ù×÷¡¢¸³ÖµÔªËãµÈ£©Ïò²Ù×÷Õ»ÖÐдÈëºÍÌáÈ¡ÄÚÈÝ£¬Ò²¾ÍÊÇÈëÕ»ºÍ³öÕ»²Ù×÷¡£JavaÐéÄâ»úµÄ½âÊÍÖ´ÐÐÒýÇæ³ÆÎª¡°»ùÓÚÕ»µÄÖ´ÐÐÒýÇæ¡±£¬ÆäÖÐËùÖ¸µÄ¡°Õ»¡±¾ÍÊDzÙ×÷ÊýÕ»¡£Òò´ËÎÒÃÇÒ²³ÆJavaÐéÄâ»úÊÇ»ùÓÚÕ»µÄ£¬Õâµã²»Í¬ÓÚAndroidÐéÄâ»ú£¬AndroidÐéÄâ»úÊÇ»ùÓڼĴæÆ÷µÄ¡£»ùÓÚÕ»µÄÖ¸Á×îÖ÷ÒªµÄÓŵãÊÇ¿ÉÒÆÖ²ÐÔÇ¿£¬Ö÷ÒªµÄȱµãÊÇÖ´ÐÐËÙ¶ÈÏà¶Ô»áÂýЩ£»¶øÓÉÓڼĴæÆ÷ÓÉÓ²¼þÖ±½ÓÌṩ£¬ËùÒÔ»ùÓڼĴæÆ÷Ö¸Á×îÖ÷ÒªµÄÓŵãÊÇÖ´ÐÐËٶȿ죬Ö÷ÒªµÄȱµãÊÇ¿ÉÒÆÖ²ÐÔ²î
¶¯Ì¬Á´½Ó: ÿ¸öÕ»Ö¡¶¼°üº¬Ò»¸öÖ¸ÏòÔËÐÐʱ³£Á¿³Ø£¨ÔÚ·½·¨ÇøÖУ¬ºóÃæ½éÉÜ£©ÖиÃÕ»Ö¡ËùÊô·½·¨µÄÒýÓ㬳ÖÓÐÕâ¸öÒýÓÃÊÇΪÁËÖ§³Ö·½·¨µ÷Óùý³ÌÖеĶ¯Ì¬Á¬½Ó¡£ClassÎļþµÄ³£Á¿³ØÖдæÔÚÓдóÁ¿µÄ·ûºÅÒýÓã¬×Ö½ÚÂëÖеķ½·¨µ÷ÓÃÖ¸Áî¾ÍÒÔ³£Á¿³ØÖÐÖ¸Ïò·½·¨µÄ·ûºÅÒýÓÃΪ²ÎÊý¡£ÕâЩ·ûºÅÒýÓã¬Ò»²¿·Ö»áÔÚÀà¼ÓÔØ½×¶Î»òµÚÒ»´ÎʹÓõÄʱºòת»¯ÎªÖ±½ÓÒýÓã¨Èç
final¡¢static ÓòµÈ£©£¬³ÆÎª¾²Ì¬½âÎö£¬ÁíÒ»²¿·Ö½«ÔÚÿһ´ÎµÄÔËÐÐÆÚ¼äת»¯ÎªÖ±½ÓÒýÓã¬Õⲿ·Ö³ÆÎª¶¯Ì¬Á¬½Ó¡£
·½·¨·µ»ØµØÖ·: µ±Ò»¸ö·½·¨±»Ö´Ðкó£¬ÓÐÁ½ÖÖ·½Ê½Í˳ö¸Ã·½·¨£ºÖ´ÐÐÒýÇæÓöµ½ÁËÈÎÒâÒ»¸ö·½·¨·µ»ØµÄ×Ö½ÚÂëÖ¸Áî»òÓöµ½ÁËÒì³££¬²¢ÇÒ¸ÃÒ쳣ûÓÐÔÚ·½·¨ÌåÄڵõ½´¦Àí¡£ÎÞÂÛ²ÉÓúÎÖÖÍ˳ö·½Ê½£¬ÔÚ·½·¨Í˳öÖ®ºó£¬¶¼ÐèÒª·µ»Øµ½·½·¨±»µ÷ÓõÄλÖ㬳ÌÐò²ÅÄܼÌÐøÖ´ÐС£·½·¨·µ»ØÊ±¿ÉÄÜÐèÒªÔÚÕ»Ö¡Öб£´æÒ»Ð©ÐÅÏ¢£¬ÓÃÀ´°ïÖú»Ö¸´ËüµÄÉϲ㷽·¨µÄÖ´ÐÐ״̬¡£Ò»°ãÀ´Ëµ£¬·½·¨Õý³£Í˳öʱ£¬µ÷ÓÃÕßµÄPC¼ÆÊýÆ÷µÄÖµ¾Í¿ÉÒÔ×÷Ϊ·µ»ØµØÖ·£¬Õ»Ö¡ÖкܿÉÄܱ£´æÁËÕâ¸ö¼ÆÊýÆ÷Öµ£¬¶ø·½·¨Òì³£Í˳öʱ£¬·µ»ØµØÖ·ÊÇҪͨ¹ýÒì³£´¦ÀíÆ÷À´È·¶¨µÄ£¬Õ»Ö¡ÖÐÒ»°ã²»»á±£´æÕⲿ·ÖÐÅÏ¢¡£·½·¨Í˳öµÄ¹ý³Ìʵ¼ÊÉϵÈͬÓڰѵ±Ç°Õ»Ö¡³öÕ¾£¬Òò´ËÍ˳öʱ¿ÉÄÜÖ´ÐеIJÙ×÷ÓУº»Ö¸´Éϲ㷽·¨µÄ¾Ö²¿±äÁ¿±íºÍ²Ù×÷ÊýÕ»£¬Èç¹ûÓзµ»ØÖµ£¬Ôò°ÑËüѹÈëµ÷ÓÃÕßÕ»Ö¡µÄ²Ù×÷ÊýÕ»ÖУ¬µ÷ÕûPC¼ÆÊýÆ÷µÄÖµÒÔÖ¸Ïò·½·¨µ÷ÓÃÖ¸ÁîºóÃæµÄÒ»ÌõÖ¸Áî¡£
ÎÒÏë¹ØÓÚÕâ¸öÇøÓòµÄ¶«Î÷ÎÒÒѾ½éÉÜÍêÁË£¬ÎÒÏëÄãÒ²Ó¦¸Ã¶®ÁË¡£
ÏÂÃæÎÒÃÇÀ´ÏÂÒ»¸öÇøÓò: ¶Ñ(heap)
¶Ñ(Heap)
¶ÑÇø£¬ÊÇÒ»¿éºÜÓÐÒâ˼µÄÇøÓò£¬ÎªÉ¶ÓÐÒâ˼£¬ÒòΪÕâ¿éÇøÓòÊÇËùÓÐÏ̹߳²ÏíµÄ£¬Ò²ÊÇÎÒÃǴ󲿷ֵĶÔÏóµÄ¾Û¾ÓµØ(Ϊɶ˵ÊǴ󲿷ÖÄØ£¿Õâ¸ö¸ÅÄîÎÒÃÇÖ®ºóµÄÎÄÕÂ»á½øÐÐÏêϸµÄ½²½â£¬Èç¹ûÄãÌØ±ðºÃÆæ£¬¿ÉÒÔ¿´Ò»ÏÂÎÒ֮ǰµÄÎÄÕÂ,
JavaÌÓÒÝ·ÖÎö)£¡Ò²ÊÇjvm¹ÜÀíµÄ×î´óÒ»¿éÄÚ´æ(¶ÔÁË£¬ÉÏÃæµÄͼµÄ´óС²»´ú±íÄÚ´æÕ¼±È£¬Ö»ÊÇΪÁË¿´×ÅÊæ·þ¶øÒÑ)!Ò²ÊÇgc¿ªÕ¹¹¤×÷µÄÖ÷񻂿Óò¡£
¶ÑÄÚ´æÖзÖΪһ¿éÇøÓò£¬ÓÃÓÚ´æ´¢ÀàÐÅÏ¢£¬¾²Ì¬±äÁ¿µÈµÈÊý¾Ý£¬ÕâÒ»¿éÇøÓò֮ǰ½Ð×ö·½·¨ÇøºóÃæÓÖ½ÐÓÀ¾Ã´ø£¬Ö®ºó¸ÄÃû½Ð×öMeta-Area/Meta
Space Area£¬ÔªÊý¾Ý¿Õ¼ä£¬Ãû×Ö²»ÖØÒª£¬ÎÒÃÇÒªÇå³þÕâ¿éÇøÓòÊÇʲô×÷ÓþÍÐÐÁË£¡
Meta-Area
Õâ¿éÇøÓòÒ²ÊÇÏ̹߳²ÏíµÄÇøÓò£¬ËüÖ÷Òª´æ´¢jvm¼ÓÔØÀàµÄÀàÐÅÏ¢£¬Àà±äÁ¿£¬³£Á¿(Õâ¸öÔÚmeta-areaµÄ³£Á¿Çø)£¬¼´Ê±±àÒëÆ÷±àÒëºóµÄ´úÂëµÈÊý¾Ý¡£
ÔËÐÐʱ³£Á¿Çø
Õâ¸öÇøÓòÊÇMeta-AreaµÄÒ»²¿·Ö£¬ÓÃÓÚ´æ·Å±àÒëÆ÷Éú³ÉµÄ¸÷ÖÖ×ÖÃæÁ¿ºÍ·ûºÅÒýÓã¬Õⲿ·ÖÄÚÈݽ«ÔÚÀà¼ÓÔØºó´æ·Åµ½·½·¨ÇøµÄÔËÐÐʱ³£Á¿³ØÖС£ÕâÔÚÎÒÃǵÄÉÏһƪ²©¿ÍÓÐËùÉæ¼°¡£
¿ÝÔï¸ÅÄîÐԵĶ«Î÷¿´ÍêÖ®ºó£¬ÎÒÃÇÀ´¿´Ò»¸öÀý×Ó£¬À´¼ÓÉîÒ»ÏÂÕâ¿éµÄÓ¡Ïó£º
public void
test() {
Object obj = new Object();
} |
¶ÔÓÚÕâ¶Î´úÂë»áÉæ¼°Vm Stack¡¢Java Heap¡¢Meta-AreaÈý¸ö×îÖØÒªµÄÄÚ´æÇøÓò¡£
½áºÏÎÒÃÇÇ°ÃæµÄÀý×Ó£¬ÒòΪtest()·½·¨Éæ¼°µ½Vm StackÇø£¬ÎÒÏëÄãÓ¦¸ÃÃ÷°×£¬obj»á´æ·ÅÔÚ¾Ö²¿±äÁ¿±íÖУ¬new
Object()£¬ÎÒÃÇÇ°ÃæËµ¹ýÎÒÃǴ󲿷ֵĶÔÏó¶¼»á´æ´¢ÔÚJava HeapÕâ¸öÇøÓò£¬ËùÒÔ£¬Java
Heap´æ´¢ÁËÕâ¸öʵÀý¶ÔÏó£¡ÄÇôÄã»áºÜºÃÆæ£¬Meta-AreaΪɶ»áÉæ¼°µ½ÄØ£¿
ÎÒÃÇÖªµÀMeta-Area´æ´¢ÁËÀàµÄÐÅÏ¢£¬Àà±äÁ¿³£Á¿µÈµÈ¶«Î÷£¡ÒòΪÎÒÃÇʵÀý»¯Object¶ÔÓ¦µÄʱºò£¬ÒªÓõ½ObjectÕâ¸öÀàµÄÐÅÏ¢£¬ËùÒÔËü»á·ÃÎÊMeta-AreaµÄObject.classÕâ¸öClass¶ÔÏóÀ´»ñµÃһЩʵÀý»¯¶ÔÏóÐèÒªµÄ¶«Î÷¡£
¶ÔÁË£¬×÷Ϊ²¹³ä£¬ÎÒÏëÄ㻹ÐèÒªÖªµÀ, objÒýÓÃÔõôÄãÄÜ·ÃÎʵ½Java HeapÇøµÄÄǸöʵÀý»¯¶ÔÏó
ÓÐÁ½ÖÖ·½Ê½£¬Ò»ÖÖʹÓùý¾ä±úÖ¸Õë(ѧ¹ýc/c++¶ÔÕâЩ¸ÅÄîÓ¦¸Ã»áºÜÊìϤ)

»¹ÓÐÒ»ÖÖ¾ÍÊÇͨ¹ýÖ¸ÕëÖ±½Ó·ÃÎÊ

ÉÏͼÀ´×ÔÉîÈëÀí½âJVMÒ»Êé
±¾µØ·½·¨Õ»(Native Method Stack)
Õâ¿éÇøÓòÏà¶ÔÀ´Ëµ£¬Ã»ÓÐÇ°Ãæ¼¸¸ö¸ÅÄîÖØÒª¡£
¸ÃÇøÓòÓëÐéÄâ»úÕ»Ëù·¢»ÓµÄ×÷Ó÷dz£ÏàËÆ£¬Ö»ÊÇÐéÄâ»úջΪÐéÄâ»úÖ´ÐÐJava·½·¨·þÎñ£¬¶ø±¾µØ·½·¨Õ»ÔòΪʹÓõ½µÄ±¾µØ²Ù×÷ϵͳ£¨Native£©·½·¨·þÎñ¡£
±ÈÈçJavaµ÷ÓÃc/c++/»ã±à¾ÍÓõ½Õâ¿éÇøÓò
½áβ
ÎÒÏëÄã¿´ÍêÕâÆª²©ÎÄ£¬Ó¦¸Ã´ïµ½ÁËÎÒÃÇÎÄÕ¿ªÊ¼Ö®Ç°µÄÄ¿±ê£¡ÕâÆªÎÄÕ½éÉܵıȽÏdzÏÔ£¬±¾×ÅÓÃÀý×ÓÀ´½âÊÍ˵Ã÷ÄÚ´æÇøÓòµÄ×÷Óã¬ÕâÑùÎÒÏëÄã»á¸üÈÝÒ×½ÓÊÕ£¬×Ü±È´óÆ¬µÄÎÄ×ÖÃèÊöÈÃÄã¸üÓÐÐËȤ£¡
|