JavaÀà³õʼ»¯Ë³Ðò
[ÒýÑÔ]
±¾ÎÄÖ÷Òª×ܽáÁËjavaÀàµÄlifetime¡£°üÀ¨´ÓÀàµÄ¼ÓÔØ£¬link£¬initialize£¬ÒÔÖÁ¶ÔÏóµÄʵÀý»¯ºÍÏú»Ù¡£²¢½áºÏjvm¹æ·¶£¬ÂÔ×÷½âÊÍ¡£
1.²âÊÔÓóÌÐò£º
2.³ÌÐòÊä³ö£º
[ÕýÎÄ]
Java¶ÔÏóµÄ´ÓÎÞµ½ÓÐÒª¾¹ýÀàµÄ¼ÓÔØ£¬Á´½Ó£¬³õʼ»¯ºÍ¶ÔÏóµÄʵÀý»¯Õ⼸¸ö¹ý³Ì¡£´Ó×ÜÌåÀ´ËµÀàµÄÉúÃüÖÜÆÚ´óÖ½«Æä·ÖΪÈý¸öphase£º
ÀàÐÍ£¨Àà»òÕß½Ó¿Ú£©µÄÉúÃüÖÜÆÚ£º´ÓÀàÐ͵Äinitial entranceµ½×îÖÕÍ˳öÐéÄâ»ú.
1£®ÀàÉúÃüÖÜÆÚµÄ¿ªÊ¼£º×°ÔØ£¬Á´½Ó£¬³õʼ»¯£¨Ó×Ä꣩
2£®ÀàÉúÃüÖÜÆÚµÄÖ÷ҪʱÆÚ£º¶ÔÏóʵÀý»¯£¬Öսᣨ³ÉÄ꣩
3£®ÉúÃüÖÜÆÚµÄÄ©ÆÚ£ºÀàµÄÖÕ½áºÍÐ¶ÔØ¡££¨ÍíÄ꣩
Phase1:class lifetime
Class lifetime = class load + link + initialize
ͼ1 ÀàÖ®³õ
Phase1-1£ºLoad £¨3W£©
1£®what is “Load”£¿
×°ÔØÖ¸µÄÊÇ“jvmѰÕÒÒ»¸ö¾ßÓÐÌØ¶¨Ãû³ÆµÄÀà»òÕ߽ӿڵĶþ½øÖÆÐÎʽ£¬²¢Ê¹ÓÃÕâ¸ö¶þ½øÖÆÐÎʽ¹¹ÔìÒ»¸ö´ú±í¸ÃÀà»òÕß½Ó¿ÚµÄClass¶ÔÏóµÄ¹ý³Ì”¡£×°Ôعý³Ì°üÀ¨jvmµÄÏÂÁÐÈý¸ö¶¯×÷£º
Ø ²úÉúÓÃÓÚ±í´ï¸ÃÀàÐÍ£¨Àà»òÕß½Ó¿Ú£©µÄ¶þ½øÖÆÊý¾ÝÁ÷£¨jvm or complier£¿£¿£©
Ø ÔÚMethod area£¬½âÎö¸Ã¶þ½øÖÆÊý¾ÝÁ÷³ÉÄÚ²¿Êý¾Ý½á¹¹
Ø ²úÉú±í´ï¸ÃÀàÐ͵Äjava.lang.ClassʵÀý¡££¨´Ë´¦ÒѾÓÐinstanceÉú³ÉÁË£¡£©
java.lang.ClassʵÀýÊǼÓÔØ²½ÖèµÄ×îºó²úÎ×÷Ϊһ¸ö½Ó¿Ú£¬·þÎñÓÚ³ÌÐò£¨class consumer£©ºÍÄÚ²¿Êý¾Ý½á¹¹£¨class representation£©Ö®¼ä¡£ÎªÁË´æÈ¡´æ´¢ÓÚÄÚ²¿Êý¾Ý½á¹¹µÄÀàÐÍÐÅÏ¢£¬³ÌÐòµ÷ÓÃÏà¹ØÀàÐ͵ÄclassʵÀýµÄ·½·¨¡£
2£®when to “load”£¿
¶ÔÓÚºÎÊ±×°ÔØ£¬jvm¹æ·¶ÔÊÐíjvmÉè¼ÆÕßµ¯ÐÔʵÏÖ¡£
ÒÔthe command lineΪÀý£º
java Terminator Hasta la vista Baby!
will start a Java virtual machine by invoking the method main of class Terminator
The initial attempt to execute the method main of class Terminator discovers that the class Terminator is not loaded-that is, the virtual machine does not currently contain a binary representation for this class. The virtual machine then uses a ClassLoader to attempt to find such a binary representation¡£
3£®who performs“load”£¿
Ïà¹ØÎĵµ£º
Javaѧϰ´ÓÈëÃŵ½¾«Í¨
Ò»¡¢ JDK (Java Development Kit)
JDKÊÇÕû¸öJavaµÄºËÐÄ£¬°üÀ¨ÁËJavaÔËÐл·¾³£¨Java Runtime Envirnment£©£¬Ò»¶ÑJava¹¤¾ßºÍJava»ù´¡µÄÀà¿â(rt.jar)¡£²»ÂÛʲôJavaÓ¦Ó÷þÎñÆ÷ʵÖʶ¼ÊÇÄÚÖÃÁËij¸ö°æ±¾µÄJDK¡£Òò´ËÕÆÎÕJDKÊÇѧºÃJavaµÄµÚÒ»²½¡£×îÖ÷Á÷µÄJ ......
/*****************TestCar1 begin************************/
public class TestCar1 {
public static final int Ok=1; //Õý³£Çé¿ö
public static final int Wrong=2; //Òì³£Çé¿ö
public int run(){
if("³µ×ÓûÓгöÏÖ¹ÊÕÏ"){  ......
»°ÌâÊÇÓÉÈçϵÄÊÂÇéÒý³öµÄ£º public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = "abc"; if (str1 == str2) { ......
Java SE=Java Standard Edition
Java EE=Java Enterprise Edition
Java ME=Java Mobile Edition
SEÖ÷ÒªÓÃÓÚ×ÀÃæ³ÌÐò,¿ØÖÆÌ¨¿ª·¢(JFC)
EEÆóÒµ¼¶¿ª·¢(JSP,EJB)
MEǶÈëʽ¿ª·¢(ÊÖ»ú,С¼Òµç)
Ŀǰ£¬Java 2ƽ̨ÓÐ3¸ö°æ±¾£¬ËüÃÇÊÇÊÊÓÃÓÚСÐÍÉ豸ºÍÖÇÄÜ¿¨µÄJa ......
javax.servlet.http.HttpSession Õâ¸öÀàÊǺܳ£Óõģ¬Ã¿µ±ÎÒÃÇä¯ÀÀÍøÕ¾£¬²»ÂÛÓÐûÓеǽ£¬¶¼»á²úÉú1¸ösession£¬Ëü¼Ç¼Á˺Íä¯ÀÀÕßÏà¹ØµÄÊý¾Ý£»
ÏÂÃæ½éÉÜsessionµÄ2¸ö¼àÌýÆ÷½Ó¿Ú£º
1£©javax.servlet.http.HttpSessionBindingListener;
ʵÏÖÕâ¸ö½Ó¿ÚµÄÀ࣬ÿµ±±»´æ·Åµ½session»ò´ÓsessionÖÐÒÆ³ý¶¼»á³ö·¢½Ó¿ÚÖÐÏàÓ¦µ ......