¸ßÐÔÄÜJAVA´úÂëÖ®ÄÚ´æ¹ÜÀí
×÷ÕߣºØýÃûÀ´Ô´£ºÂ̲èÈí¼þÔ°2011-05-01 11:00:47
¡¡¡¡¸üÉõÕßÄãдµÄ´úÂ룬GC¸ù±¾¾Í»ØÊÕ²»ÁË£¬Ö±½Óϵͳ¹Òµô¡£GCÊÇÒ»¶Î³ÌÐò£¬²»ÊÇÖÇÄÜ£¬ËûÖ»»ØÊÕËûÈÏΪµÄÀ¬»ø£¬¶ø²»ÊÇ»ØÊÕÄãÈÏΪµÄÀ¬»ø¡£
- PC°æ
GCÀ¬»ø»ØÊÕ:
¡¡¡¡Grabage CollectionÏàÐÅѧ¹ýJAVAµÄÈ˶¼ÖªµÀÕâ¸öÊÇʲôÒâ˼.µ«ÊÇËûÊÇÈçºÎ¹¤×÷µÄÄØ?
¡¡¡¡Ê×ÏÈ£¬JVMÔÚ¹ÜÀíÄÚ´æµÄʱºò¶ÔÓÚ±äÁ¿µÄ¹ÜÀí×ÜÊÇ·ÖжÔÏóºÍÀ϶ÔÏó¡£Ð¶ÔÏóÒ²¾ÍÊÇ¿ª·¢Õßnew³öÀ´µÄ¶ÔÏ󣬵«ÊÇÓÉÓÚÉúÃüÖÜÆڶ̣¬ÄÇôËûÕ¼ÓõÄÄÚ´æ²¢²»ÊÇÂíÉÏÊÍ·Å£¬¶øÊDZ»±ê¼ÇΪÀ϶ÔÏó£¬Õâ¸öʱºò¸Ã¶ÔÏó»¹ÊÇÒª´æÔÚÒ»¶Îʱ¼ä¡£È»ºóÓÉJVM¾ö¶¨ËûÊÇ·ñÊÇÀ¬»ø¶ÔÏ󣬲¢½øÐлØÊÕ¡£
¡¡¡¡ËùÒÔÎÒÃÇ¿ÉÒÔÖªµÀ£¬À¬»øÄÚ´æ²¢²»ÊÇÓÃÍêÁËÂíÉϾͱ»ÊÍ·Å£¬ËùÒԾͻá²úÉúÄÚ´æÊͷŲ»¼°Ê±µÄÏÖÏ󣬴Ӷø½µµÍÁËÄÚ´æµÄʹÓ᣶øµ±³ÌÐòºÆ´óµÄʱºò¡£ÕâÖÖÏÖÏó¸üΪÃ÷ÏÔ£¬²¢ÇÒGCµÄ¹¤×÷Ò²ÊÇÐèÒªÏûºÄ×ÊÔ´µÄ¡£ËùÒÔ£¬Ò²¾Í»á²úÉúÄÚ´æÀË·Ñ¡£
JVMÖеĶÔÏóÉúÃüÖÜÆÚÀï̸ÄÚ´æ»ØÊÕ:
¡¡¡¡¶ÔÏóµÄÉúÃüÖÜÆÚÒ»°ã·ÖΪ7¸ö½×¶Î£º´´½¨½×¶Î£¬Ó¦Óý׶Σ¬²»¿ÉÊӽ׶Σ¬²»¿Éµ½´ï½×¶Î£¬¿ÉÊÕ¼¯½×¶Î£¬ÖÕ½á½×¶Î£¬ÊͷŽ׶Ρ£
¡¡¡¡´´½¨½×¶Î£ºÊ×ÏÈ´ó¼Ò¿´Ò»ÏÂ,ÈçÏÂÁ½¶Î´úÂë:
¡¡¡¡test1:
¡¡¡¡for( int i=0; i<10000; i++)
¡¡¡¡Object obj=new Object();
¡¡¡¡test2:
¡¡¡¡Object obj=null;
¡¡¡¡for( int i=0; i<10000; i++)
¡¡¡¡obj=new Object();
¡¡¡¡ÕâÁ½¶Î´úÂ붼ÊÇÏàͬµÄ¹¦ÄÜ£¬µ«ÊÇÏÔÈ»test2µÄÐÔÄÜÒª±Ètest1ÐÔÄÜÒªºÃ£¬ÄÚ´æʹÓÃÂÊÒª¸ß£¬ÕâÊÇΪʲôÄØ?ÔÒòºÜ¼òµ¥£¬test1ÿ´ÎÖ´ÐÐforÑ»·¶¼Òª´´½¨Ò»¸öObjectµÄÁÙʱ¶ÔÏ󣬵«ÊÇÕâЩÁÙʱ¶ÔÏóÓÉÓÚJVMµÄGC²»ÄÜÂíÉÏÏú»Ù£¬ËùÒÔËûÃÇ»¹Òª´æÔںܳ¤Ê±¼ä£¬¶øtest2ÔòÖ»ÊÇÔÚÄÚ´æÖб£´æÒ»·Ý¶ÔÏóµÄÒýÓ㬶ø²»±Ø´´½¨´óÁ¿ÐÂÁÙʱ±äÁ¿£¬´Ó¶ø½µµÍÁËÄÚ´æµÄʹÓá£
¡¡¡¡ÁíÍâ²»Òª¶Ôͬһ¸ö¶ÔÏó³õʼ»¯¶à´Î¡£ÀýÈç:
¡¡¡¡public class A{
¡¡¡¡private Hashtable table = new Hashtable();
¡¡¡¡public A(){ table = new Hashtable();
¡¡¡¡// ÕâÀïÓ¦¸ÃÈ¥µô,ÒòΪtableÒѾ±»³õʼ»¯.
¡¡¡¡}
¡¡¡¡}
¡¡¡¡ÕâÑù¾ÍnewÁËÁ½¸öHashtable£¬µ«ÊÇȴֻʹÓÃÁËÒ»¸ö¡£ÁíÍâÒ»¸öÔòûÓб»ÒýÓÃ.¶ø±»ºöÂÔµô.ÀË·ÑÁËÄÚ´æ.²¢ÇÒÓÉÓÚ½øÐÐÁËÁ½´Înew²Ù×÷.Ò²Ó°ÏìÁË´úÂëµÄÖ´ÐÐËٶȡ£
Ó¦Óý׶Σº¼´¸Ã¶ÔÏóÖÁÉÙÓÐÒ»¸öÒýÓÃÔÚά»¤Ëû.
¡¡¡¡²»¿ÉÊӽ׶Σº¼´³¬³ö¸Ã±äÁ¿µÄ×÷ÓÃÓò¡£ÕâÀïÓÐÒ»¸öºÜºÃµÄ×ö·¨,ÒòΪJVMÔÚGCµÄʱºò²¢²»ÊÇÂíÉϽøÐлØÊÕ,¶øÊÇÒªÅж϶ÔÏóÊÇ·ñ±»ÆäËûÒýÓÃÔÚά»¤.ËùÒÔ,Õâ¸öʱºòÈç¹ûÎÒÃÇÔÚʹÓÃÍêÒ»¸ö¶ÔÏóÒÔºó¶ÔÆäobj=null»òÕßobj.doSomething()²Ù×÷,½«Æä±ê¼ÇΪ¿Õ,¿ÉÒÔ°ïÖúJVM¼°Ê±·¢ÏÖÕâ¸öÀ¬»ø¶ÔÏó.
¡¡¡¡²»¿Éµ½´ï½×¶Î£º¾ÍÊÇÔÚJVMÖÐÕÒ²»µ½¶Ô¸Ã¶ÔÏóµÄÖ±½Ó»òÕß¼ä½ÓµÄÒýÓá£
¡¡¡¡¿ÉÊÕ¼¯½×¶Î,ÖÕ½á½×¶Î,ÊͷŽ׶Σº´ËΪ»ØÊÕÆ÷·¢ÏָöÔÏ󲻿ɵ½´ï,finalize·½·¨ÒѾ±»Ö´ÐÐ,»òÕ߶ÔÏó¿Õ¼äÒѱ»ÖØÓõÄʱºò¡£
JAVAµÄÎö¹¹·½·¨:
¡¡¡¡¿ÉÄܲ»»áÓÐÈËÏàÐÅ,JAVAÓÐÎö¹¹º¯Êý? ÊǵÄ,ÓС£ÒòΪJAVAËùÓÐÀ඼¼Ì³ÐÖÁObjectÀà,¶øfinalize¾ÍÊÇObjectÀàµÄÒ»¸ö·½·¨,Õâ¸ö·½·¨ÔÚJAVAÖоÍÊÇÀàËÆÓÚC++Îö¹¹º¯Êý.Ò»°ãÀ´Ëµ¿ÉÒÔͨ¹ýÖØÔØfinalize·½·¨µÄÐÎʽ²ÅÊÍ·ÅÀàÖжÔÏó.Èç:
¡¡¡¡public class A{
¡¡¡¡public Object a;
¡¡¡¡public A(){ a = new Object ;}
¡¡¡¡protected void finalize() throws java.lang.Throwable{
¡¡¡¡a = null; // ±ê¼ÇΪ¿Õ,ÊͷŶÔÏó
¡¡¡¡super.finalize(); // µÝ¹éµ÷Óó¬ÀàÖеÄfinalize·½·¨.
¡¡¡¡}
¡¡¡¡}
¡¡¡¡µ±È»,ʲôʱºò¸Ã·½·¨±»µ÷ÓÃÊÇÓÉJVMÀ´¾ö¶¨µÄ.......................
¡¡¡¡Ò»°ãÀ´Ëµ,ÎÒÃÇÐèÒª´´½¨Ò»¸ödestoryµÄ·½·¨À´ÏÔʽµÄµ÷Óø÷½·¨.È»ºóÔÚfinalizeÒ²¶Ô¸Ã·½·¨½øÐе÷ÓÃ,ʵÏÖË«±£ÏÕµÄ×ö·¨.
¡¡¡¡ÓÉÓÚ¶ÔÏóµÄ´´½¨ÊǵݹéʽµÄ,Ò²¾ÍÊÇÏȵ÷Ó󬼶ÀàµÄ¹¹Ôì,È»ºóÒÀ´ÎÏòϵݹéµ÷Óù¹Ô캯Êý,ËùÒÔÓ¦¸Ã±ÜÃâÔÚÀàµÄ¹¹Ô캯ÊýÖгõʼ»¯±äÁ¿,ÕâÑù¿ÉÒÔ±ÜÃâ²»±ØÒªµÄ´´½¨¶ÔÏóÔì³É²»±ØÒªµÄÄÚ´æÏûºÄ.µ±È»ÕâÀïÒ²¾Í¿´³öÀ´½Ó¿ÚµÄÓÅÊÆ.
Êý×éµÄ´´½¨:
¡¡¡¡ÓÉÓÚÊý×éÐèÒª¸ø¶¨Ò»¸ö³¤¶È,ËùÒÔÔÚ²»È·¶¨Êý¾ÝÊýÁ¿µÄʱºò¾³£»á´´½¨¹ý´ó,»ò¹ýСµÄÊý×éµÄÏÖÏó.Ôì³É²»±ØÒªµÄÄÚ´æÀË·Ñ,ËùÒÔ¿ÉÒÔͨ¹ýÈíÒýÓõķ½Ê½À´¸æËßJVM¼°Ê±»ØÊÕ¸ÃÄÚ´æ.(ÈíÒýÓÃ,¾ßÌå²é×ÊÁÏ).
¡¡¡¡ÀýÈç:
¡¡¡¡Object obj = new char[10000000000000000];
¡¡¡¡SoftReference ref = new SoftReference(obj);
¹²Ïí¾²Ì¬´æ´¢¿Õ¼ä:
¡¡¡¡ÎÒÃǶ¼ÖªµÀ¾²Ì¬±äÁ¿ÔÚ³ÌÐòÔËÐÐÆÚ¼äÆäÄÚ´æÊǹ²ÏíµÄ,Òò´ËÓÐʱºòΪÁ˽ÚÔ¼Äڴ湤¼þ,½«Ò»Ð©±äÁ¿ÉùÃ÷Ϊ¾²Ì¬±äÁ¿È·Êµ¿ÉÒÔÆðµ½½ÚÔ¼ÄÚ´æ¿Õ¼äµÄ×÷ÓÃ.µ«ÊÇÓÉÓÚ¾²Ì¬±äÁ¿ÉúÃüÖÜÆںܳ¤,²»Ò×±»ÏµÍ³»ØÊÕ,ËùÒÔʹÓþ²Ì¬±äÁ¿ÒªºÏÀí,²»ÄÜäĿµÄʹÓÃ.ÒÔÃâÊʵÃÆä·´¡£
Òò´Ë½¨ÒéÔÚÏÂÃæÇé¿öÏÂʹÓÃ:
¡¡¡¡1,±äÁ¿Ëù°üº¬µÄ¶ÔÏóÌå»ý½Ï´ó,Õ¼ÓÃÄÚ´æ¹ý¶à.
¡¡¡¡2,±äÁ¿Ëù°üº¬¶ÔÏóÉúÃüÖÜÆڽϳ¤.
¡¡¡¡3,±äÁ¿Ëù°üº¬Êý¾ÝÎȶ¨.
¡¡¡¡4,¸ÃÀàµÄ¶ÔÏóʵÀýÓжԸñäÁ¿Ëù°üº¬µÄ¶ÔÏóµÄ¹²ÏíÐèÇó.(Ò²¾ÍÊÇ˵ÊÇ·ñÐèÒª×÷Ϊȫ¾Ö±äÁ¿).
¶ÔÏóÖØÓÃÓëGC:
¡¡¡¡ÓеÄʱºò,ÈçÊý¾Ý¿â²Ù×÷¶ÔÏó,Ò»°ãÇé¿öÏÂÎÒÃǶ¼ÐèÒªÔÚ¸÷¸ö²»Í¬Ä£¿é¼äʹÓÃ,ËùÒÔÕâÑùµÄ¶ÔÏóÐèÒª½øÐÐÖØÓÃÒÔÌá¸ßÐÔÄÜ.Ò²ÓÐЧµÄ±ÜÃâÁË·´¸´´´½¨¶ÔÏóÒýÆðµÄÐÔÄÜϽµ.
¡¡¡¡Ò»°ãÀ´Ëµ¶ÔÏó³ØÊÇÒ»¸ö²»´íµÄ×¢Òâ.ÈçÏÂ:
¡¡¡¡public abstarct class ObjectPool{
¡¡¡¡private Hashtable locked,unlocked;
¡¡¡¡private long expirationTime;
¡¡¡¡abstract Object create();
¡¡¡¡abstract void expire( Object o);
¡¡¡¡abstract void validate( Object o);
¡¡¡¡synchronized Object getObject(){...};
¡¡¡¡synchronized void freeObject(Object o){...};
¡¡¡¡}
¡¡¡¡ÕâÑùÎÒÃǾÍÍê³ÉÁËÒ»¸ö¶ÔÏó³Ø,ÎÒÃÇ¿ÉÒÔ½«Í¨¹ý¶ÔÓ¦µÄ·½·¨À´´æȡɾ³ýËùÐè¶ÔÏó.À´Î¬»¤Õâ¿ìÄÚ´æÌá¸ßÄÚ´æÖØÓÃ.
¡¡¡¡µ±È»Ò²¿ÉÒÔͨ¹ýµ÷ÓÃSystem.gc()Ç¿ÖÆϵͳ½øÐÐÀ¬»ø»ØÊÕ²Ù×÷.µ±È»ÕâÑùµÄ´ú¼ÛÊÇÐèÒªÏûºÄһЩcpu×ÊÔ´.
²»ÒªÌáÇ°´´½¨¶ÔÏó:
¡¡¡¡¾¡Á¿ÔÚÐèÒªµÄʱºò´´½¨¶ÔÏó,Öظ´µÄ·ÖÅä,¹¹Ôì¶ÔÏó¿ÉÄÜ»áÒòΪÀ¬»ø»ØÊÕ×ö¶îÍâµÄ¹¤×÷½µµÍÐÔÄÜ.
JVMÄÚ´æ²ÎÊýµ÷ÓÅ:
¡¡¡¡Ç¿ÖÆÄÚ´æ»ØÊÕ¶ÔÓÚϵͳ×Ô¶¯µÄÄÚ´æ»ØÊÕ»úÖÆ»á²úÉú¸ºÃæÓ°Ïì,»á¼Ó´óϵͳ×Ô¶¯»ØÊյĴ¦Àíʱ¼ä,ËùÒÔÓ¦¸Ã¾¡Á¿±ÜÃâÏÔʽʹÓÃSystem.gc(),
¡¡¡¡JVMµÄÉèÖÿÉÒÔÌá¸ßϵͳµÄÐÔÄÜ.ÀýÈç:
¡¡¡¡java -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8 -Xms512m -Xmx512m
¡¡¡¡¾ßÌå¿ÉÒԲ鿴java°ïÖúÎĵµ.ÎÒÃÇÖ÷Òª½éÉܳÌÐòÉè¼Æ·½ÃæµÄÐÔÄÜÌá¸ß.
JAVA³ÌÐòÉè¼ÆÖÐÓйØÄÚ´æ¹ÜÀíµÄÆäËû¾Ñé:
¡¡¡¡¸ù¾ÝJVMÄÚ´æ¹ÜÀíµÄ¹¤×÷ÔÀí,¿ÉÒÔͨ¹ýһЩ¼¼Çɺͷ½Ê½ÈÃJVM×öGC´¦Àíʱ¸ü¼ÓÓÐЧ.,´Ó¶øÌá¸ßÄÚ´æʹÓúÍËõ¶ÌGCµÄÖ´ÐÐʱ¼ä.
¡¡¡¡1,¾¡ÔçÊÍ·ÅÎÞÓöÔÏóµÄÒýÓÃ.¼´ÔÚ²»Ê¹ÓöÔÏóµÄÒýÓúóÉèÖÃΪ¿Õ,¿ÉÒÔ¼ÓËÙGCµÄ¹¤×÷.(µ±È»Èç¹ûÊÇ·µ»ØÖµ.....)
¡¡¡¡2,¾¡Á¿ÉÙÓÃfinalizeº¯Êý,´Ëº¯ÊýÊÇJAVA¸ø³ÌÐòÔ±ÌṩµÄÒ»¸öÊͷŶÔÏó»ò×ÊÔ´µÄ»ú»á,µ«ÊÇÈ´»á¼Ó´óGC¹¤×÷Á¿.
¡¡¡¡3,Èç¹ûÐèҪʹÓõ½Í¼Æ¬,¿ÉÒÔʹÓÃsoftÓ¦ÓÃÀàÐÍ,Ëü¿ÉÒÔ¾¡¿ÉÄܽ«Í¼Æ¬¶ÁÈëÄÚ´æ¶ø²»ÒýÆðOutOfMemory.
¡¡¡¡4,×¢Ò⼯ºÏÊý¾ÝÀàÐ͵ÄÊý¾Ý½á¹¹,ÍùÍùÊý¾Ý½á¹¹Ô½¸´ÔÓ,GC¹¤×÷Á¿¸ü´ó,´¦Àí¸ü¸´ÔÓ.
¡¡¡¡5,¾¡Á¿±ÜÃâÔÚĬÈϹ¹ÔìÆ÷(¹¹Ô캯Êý)Öд´½¨,³õʼ»¯´óÁ¿µÄ¶ÔÏó.
¡¡¡¡6,¾¡Á¿±ÜÃâÇ¿ÖÆϵͳ×öÀ¬»ø»ØÊÕ.»áÔö¼Óϵͳ×öÀ¬»ø»ØÊÕµÄ×îÖÕʱ¼ä½µµÍÐÔÄÜ.
¡¡¡¡7,¾¡Á¿±ÜÃâÏÔʽÉêÇëÊý×é,Èç¹û²»µÃ²»ÉêÇëÊý×éµÄ»°,Òª¾¡Á¿×¼È·¹ÀËãÊý×é´óС.
¡¡¡¡8,Èç¹ûÔÚ×öÔ¶³Ì·½·¨µ÷ÓÃ.Òª¾¡Á¿¼õÉÙ´«µÝµÄ¶ÔÏó´óС.»òÕßʹÓÃ˲¼äÖµ±ÜÃâ²»±ØÒªÊý¾ÝµÄ´«µÝ.
¡¡¡¡9,¾¡Á¿ÔÚºÏÊʵÄÇé¿öÏÂʹÓöÔÏó³ØÀ´Ìá¸ßϵͳÐÔÄܼõÉÙÄڴ濪Ïú,µ±È»,¶ÔÏó³Ø²»ÄܹýÓÚÅÓ´ó,»áÊʵÃÆä·´.
Â̲èÈí¼þ԰С±àÍƼöÔĶÁ£º
- ÉÏһƪ£ºC££ ¿ª·¢ÖÇÄÜÊÖ»úÈí¼þ£ºÍÆÏä×Ó
- ÏÂһƪ£ºVB.net2008ʵÀý½Ì³Ì£º±àдÎÄ×Ö¼Ó½âÃܳÌÐò
- javaÔõôÉèÖÃcookie javaÉèÖÃcookie·½·¨Á÷³Ì
- javaÉèÖÃËæ»úÊýÖÖ×Ó½Ì³Ì javaËæ»úÊýÖÖ×ÓÔõôÉèÖÃ
- javaÔõôÉèÖùâ±êλÖà javaÉèÖùâ±êλÖ÷½·¨
- mac°æjavaÔõô¸üÐÂÉý¼¶ mac°æjava¸üÐÂÉý¼¶·½·¨
- °²×¿Ä£ÄâÆ÷android sdk°²×°ÍêÕûͼÎĽ̳Ì
- javaÄ£ÄâÆ÷°²×¿°æÔõôÓã¿°²×¿javaÄ£ÄâÆ÷°²×°Ê¹Óý̳Ì
- macϵͳÔõô°²×°java?Æ»¹ûmac°²×°Ð¶ÔØjava½Ì³Ì
- jdk1.7»·¾³±äÁ¿ÅäÖÃͼÎĽ̳̣ºjdkÏÂÔØ°²×°²½ÖèÏê½â
- myeclipse 2013Æƽâ×¢²áͼÎĽ̳Ì
- eclipse wtkÅäÖð²×°²½ÖèͼÎÄÏê½â
- ±¾ÀàÍƼö
- ±¾ÀàÅÅÐÐ
- 1visual studio2015ÏÂÔØ°²×°Ê¹Óý̳ÌͼÎÄÏê½â
- 2mysql±àÂëÉèÖÃ½Ì³Ì mysql±àÂëÔõôÉèÖò½Öè
- 3swiftÓïÑÔ¿ª·¢»·¾³´î½¨½Ì³Ì swiftÓïÑÔ±à³Ì»·¾³´î½¨Á÷³Ì
- 4swiftÓïÑÔѧϰ½Ì³Ì Æ»¹ûswift±à³ÌÓïÑÔ»ù´¡½Ì³Ì
- 5VirtualBox´î½¨RAC²âÊÔ»·¾³¹²Ïí´æ´¢Éè¼Æ½Ì³Ì
- 6C#ÖÐcontinueÓï¾äµÄÓ÷¨
- 7iOS ÎļþÔõô´´½¨£¿ÔõôʹÓñ¾µØ»¯ÓïÑÔÖÐÎÄ£¿
- 8C#³£ÓõÄÕýÔò±í´ïʽ 30¸öC#ÕýÔò±í´ïʽ
- 9Cocos2d-x windowsÓëvs2010 °²×°ÅäÖÃͼÎĽ̳Ì
- 10WindowsÏ°²×°Æ»¹ûiPhone¿ª·¢»·¾³xcodeͼÎĽ̳Ì
- ÈÈÃÅÈí¼þ
- ÈÈÃűêÇ©