À¬»øÇåÀíÊÆÔÚ±ØÐСª¡ªJavaÀ¬»øÊÕ¼¯Ëã·¨
1.À¬»øÊÕ¼¯Ëã·¨µÄºËÐÄ˼Ïë
JavaÓïÑÔ½¨Á¢ÁËÀ¬»øÊÕ¼¯»úÖÆ£¬ÓÃÒÔ¸ú×ÙÕýÔÚʹÓõĶÔÏóºÍ·¢ÏÖ²¢»ØÊÕ²»ÔÙʹÓÃ(ÒýÓÃ)µÄ¶ÔÏ󡣸ûúÖÆ¿ÉÒÔÓÐЧ·À·¶¶¯Ì¬ÄÚ´æ·ÖÅäÖпÉÄÜ·¢ÉúµÄÁ½¸öΣÏÕ£ºÒòÄÚ´æÀ¬»ø¹ý¶à¶øÒý·¢µÄÄÚ´æºÄ¾¡£¬ÒÔ¼°²»Ç¡µ±µÄÄÚ´æÊÍ·ÅËùÔì³ÉµÄÄÚ´æ·Ç·¨ÒýÓá£
À¬»øÊÕ¼¯Ëã·¨µÄºËÐÄ˼ÏëÊÇ£º¶ÔÐéÄâ»ú¿ÉÓÃÄÚ´æ¿Õ¼ä£¬¼´¶Ñ¿Õ¼äÖеĶÔÏó½øÐÐʶ±ð£¬Èç¹û¶ÔÏóÕýÔÚ±»ÒýÓã¬ÄÇô³ÆÆäΪ´æ»î¶ÔÏ󣬷´Ö®£¬Èç¹û¶ÔÏó²»ÔÙ±»ÒýÓã¬ÔòΪÀ¬»ø¶ÔÏ󣬿ÉÒÔ»ØÊÕÆäÕ¼¾ÝµÄ¿Õ¼ä£¬ÓÃÓÚÔÙ·ÖÅä¡£À¬»øÊÕ¼¯Ëã·¨µÄÑ¡ÔñºÍÀ¬»øÊÕ¼¯ÏµÍ³²ÎÊýµÄºÏÀíµ÷½ÚÖ±½ÓÓ°Ïì×ÅϵͳÐÔÄÜ£¬Òò´ËÐèÒª¿ª·¢ÈËÔ±×ö±È½ÏÉîÈëµÄÁ˽⡣
2.´¥·¢Ö÷GC(Garbage Collector)µÄÌõ¼þ
JVM½øÐдÎGCµÄƵÂʺܸß,µ«ÒòΪÕâÖÖGCÕ¼ÓÃʱ¼ä¼«¶Ì,ËùÒÔ¶Ôϵͳ²úÉúµÄÓ°Ïì²»´ó¡£¸üÖµµÃ¹Ø×¢µÄÊÇÖ÷GCµÄ´¥·¢Ìõ¼þ,ÒòΪËü¶ÔϵͳӰÏìºÜÃ÷ÏÔ¡£×ܵÄÀ´Ëµ,ÓÐÁ½¸öÌõ¼þ»á´¥·¢Ö÷GC:
¢Ùµ±Ó¦ÓóÌÐò¿ÕÏÐʱ,¼´Ã»ÓÐÓ¦ÓÃÏß³ÌÔÚÔËÐÐʱ,GC»á±»µ÷Óá£ÒòΪGCÔÚÓÅÏȼ¶×îµÍµÄÏß³ÌÖнøÐÐ,ËùÒÔµ±Ó¦ÓÃæʱ,GCÏ߳̾Ͳ»»á±»µ÷ÓÃ,µ«ÒÔÏÂÌõ¼þ³ýÍâ¡£
¢ÚJava¶ÑÄÚ´æ²»×ãʱ,GC»á±»µ÷Óᣵ±Ó¦ÓÃÏß³ÌÔÚÔËÐÐ,²¢ÔÚÔËÐйý³ÌÖд´½¨Ð¶ÔÏó,ÈôÕâʱÄÚ´æ¿Õ¼ä²»×ã,JVM¾Í»áÇ¿ÖƵص÷ÓÃGCÏß³Ì,ÒÔ±ã»ØÊÕÄÚ´æÓÃÓÚеķÖÅä¡£ÈôGCÒ»´ÎÖ®ºóÈÔ²»ÄÜÂú×ãÄÚ´æ·ÖÅäµÄÒªÇó,JVM»áÔÙ½øÐÐÁ½´ÎGC×÷½øÒ»²½µÄ³¢ÊÔ,ÈôÈÔÎÞ·¨Âú×ãÒªÇó,Ôò JVM½«±¨¡°out of memory¡±µÄ´íÎó,JavaÓ¦Óý«Í£Ö¹¡£
ÓÉÓÚÊÇ·ñ½øÐÐÖ÷GCÓÉJVM¸ù¾Ýϵͳ»·¾³¾ö¶¨,¶øϵͳ»·¾³ÔÚ²»¶ÏµÄ±ä»¯µ±ÖÐ,ËùÒÔÖ÷GCµÄÔËÐоßÓв»È·¶¨ÐÔ,ÎÞ·¨Ô¤¼ÆËüºÎʱ±ØÈ»³öÏÖ,µ«¿ÉÒÔÈ·¶¨µÄÊǶÔÒ»¸ö³¤ÆÚÔËÐеÄÓ¦ÓÃÀ´Ëµ,ÆäÖ÷GCÊÇ·´¸´½øÐеġ£
3.¼õÉÙGC¿ªÏúµÄ´ëÊ©
¸ù¾ÝÉÏÊöGCµÄ»úÖÆ,³ÌÐòµÄÔËÐлáÖ±½ÓÓ°Ïìϵͳ»·¾³µÄ±ä»¯,´Ó¶øÓ°ÏìGCµÄ´¥·¢¡£Èô²»Õë¶ÔGCµÄÌصã½øÐÐÉè¼ÆºÍ±àÂë,¾Í»á³öÏÖÄÚ´æפÁôµÈһϵÁиºÃæÓ°Ï졣ΪÁ˱ÜÃâÕâЩӰÏì,»ù±¾µÄÔÔò¾ÍÊǾ¡¿ÉÄܵؼõÉÙÀ¬»øºÍ¼õÉÙGC¹ý³ÌÖеĿªÏú¡£¾ßÌå´ëÊ©°üÀ¨ÒÔϼ¸¸ö·½Ãæ:
(1)²»ÒªÏÔʽµ÷ÓÃSystem.gc()
´Ëº¯Êý½¨ÒéJVM½øÐÐÖ÷GC,ËäȻֻÊǽ¨Òé¶ø·ÇÒ»¶¨,µ«ºÜ¶àÇé¿öÏÂËü»á´¥·¢Ö÷GC,´Ó¶øÔö¼ÓÖ÷GCµÄƵÂÊ,Ò²¼´Ôö¼ÓÁ˼äЪÐÔÍ£¶ÙµÄ´ÎÊý¡£
(2)¾¡Á¿¼õÉÙÁÙʱ¶ÔÏóµÄʹÓÃ
ÁÙʱ¶ÔÏóÔÚÌø³öº¯Êýµ÷Óúó,»á³ÉΪÀ¬»ø,ÉÙÓÃÁÙʱ±äÁ¿¾ÍÏ൱ÓÚ¼õÉÙÁËÀ¬»øµÄ²úÉú,´Ó¶øÑÓ³¤Á˳öÏÖÉÏÊöµÚ¶þ¸ö´¥·¢Ìõ¼þ³öÏÖµÄʱ¼ä,¼õÉÙÁËÖ÷GCµÄ»ú»á¡£
(3)¶ÔÏó²»ÓÃʱ×îºÃÏÔʽÖÃΪNull
Ò»°ã¶øÑÔ,ΪNullµÄ¶ÔÏ󶼻ᱻ×÷ΪÀ¬»ø´¦Àí,ËùÒÔ½«²»ÓõĶÔÏóÏÔʽµØÉèΪNull,ÓÐÀûÓÚGCÊÕ¼¯Æ÷Åж¨À¬»ø,´Ó¶øÌá¸ßÁËGCµÄЧÂÊ¡£
(4)¾¡Á¿Ê¹ÓÃStringBuffer,¶ø²»ÓÃStringÀ´ÀÛ¼Ó×Ö·û´®(Ïê¼ûblogÁíһƪÎÄÕÂJAVAÖÐStringÓëStringBuffer)
ÓÉÓÚStringÊǹ̶¨³¤µÄ×Ö·û´®¶ÔÏó,ÀÛ¼ÓString¶ÔÏóʱ,²¢·ÇÔÚÒ»¸öString¶ÔÏóÖÐÀ©Ôö,¶øÊÇÖØд´½¨ÐµÄString¶ÔÏó,Èç Str5=Str1+Str2+Str3+Str4,ÕâÌõÓï¾äÖ´Ðйý³ÌÖлá²úÉú¶à¸öÀ¬»ø¶ÔÏó,ÒòΪ¶Ô´Î×÷¡°+¡±²Ù×÷ʱ¶¼±ØÐë´´½¨ÐµÄString¶ÔÏó,µ«ÕâЩ¹ý¶É¶ÔÏó¶ÔϵͳÀ´ËµÊÇûÓÐʵ¼ÊÒâÒåµÄ,Ö»»áÔö¼Ó¸ü¶àµÄÀ¬»ø¡£±ÜÃâÕâÖÖÇé¿ö¿ÉÒÔ¸ÄÓÃStringBufferÀ´ÀÛ¼Ó×Ö·û´®,ÒòStringBuffer Êǿɱ䳤µÄ,ËüÔÚÔÓлù´¡ÉϽøÐÐÀ©Ôö,²»»á²úÉúÖмä¶ÔÏó¡£
(5)ÄÜÓûù±¾ÀàÐÍÈçInt,Long,¾Í²»ÓÃInteger,Long¶ÔÏó
»ù±¾ÀàÐͱäÁ¿Õ¼ÓõÄÄÚ´æ×ÊÔ´±ÈÏàÓ¦¶ÔÏóÕ¼ÓõÄÉٵöà,Èç¹ûûÓбØÒª,×îºÃʹÓûù±¾±äÁ¿¡£
(6)¾¡Á¿ÉÙÓþ²Ì¬¶ÔÏó±äÁ¿
¾²Ì¬±äÁ¿ÊôÓÚÈ«¾Ö±äÁ¿,²»»á±»GC»ØÊÕ,ËüÃÇ»áÒ»Ö±Õ¼ÓÃÄÚ´æ¡£
(7)·ÖÉ¢¶ÔÏó´´½¨»òɾ³ýµÄʱ¼ä
¼¯ÖÐÔÚ¶Ìʱ¼äÄÚ´óÁ¿´´½¨Ð¶ÔÏó,ÌرðÊÇ´ó¶ÔÏó,»áµ¼ÖÂͻȻÐèÒª´óÁ¿ÄÚ´æ,JVMÔÚÃæÁÙÕâÖÖÇé¿öʱ,Ö»ÄܽøÐÐÖ÷GC,ÒÔ»ØÊÕÄÚ´æ»òÕûºÏÄÚ´æËéƬ,´Ó¶øÔö¼ÓÖ÷GCµÄƵÂÊ¡£¼¯ÖÐɾ³ý¶ÔÏó,µÀÀíÒ²ÊÇÒ»ÑùµÄ¡£ËüʹµÃͻȻ³öÏÖÁË´óÁ¿µÄÀ¬»ø¶ÔÏó,¿ÕÏпռä±ØÈ»¼õÉÙ,´Ó¶ø´ó´óÔö¼ÓÁËÏÂÒ»´Î´´½¨Ð¶ÔÏóʱǿÖÆÖ÷GCµÄ»ú»á¡£
4.gcÓëfinalize·½·¨
¢Ågc·½·¨ÇëÇóÀ¬»ø»ØÊÕ
ʹÓÃSystem.gc()¿ÉÒÔ²»¹ÜJVMʹÓõÄÊÇÄÄÒ»ÖÖÀ¬»ø»ØÊÕµÄËã·¨£¬¶¼¿ÉÒÔÇëÇóJavaµÄÀ¬»ø»ØÊÕ¡£ÐèҪעÒâµÄÊÇ£¬µ÷Óà System.gc()Ò²½ö½öÊÇÒ»¸öÇëÇó¡£JVM½ÓÊÜÕâ¸öÏûÏ¢ºó£¬²¢²»ÊÇÁ¢¼´×öÀ¬»ø»ØÊÕ£¬¶øÖ»ÊǶԼ¸¸öÀ¬»ø»ØÊÕËã·¨×öÁ˼ÓȨ£¬Ê¹À¬»ø»ØÊÕ²Ù×÷ÈÝÒ×·¢Éú£¬»òÌáÔç·¢Éú£¬»ò»ØÊս϶à¶øÒÑ¡£
¢Æfinalize·½·¨Í¸ÊÓÀ¬»øÊÕ¼¯Æ÷µÄÔËÐÐ
ÔÚJVMÀ¬»øÊÕ¼¯Æ÷ÊÕ¼¯Ò»¸ö¶ÔÏó֮ǰ £¬Ò»°ãÒªÇó³ÌÐòµ÷ÓÃÊʵ±µÄ·½·¨ÊÍ·Å×ÊÔ´£¬µ«ÔÚûÓÐÃ÷È·ÊÍ·Å×ÊÔ´µÄÇé¿öÏ£¬JavaÌṩÁËȱʡ»úÖÆÀ´ÖÕÖ¹»¯¸Ã¶ÔÏóÊÍ·Å×ÊÔ´£¬Õâ¸ö·½·¨¾ÍÊÇfinalize()¡£ËüµÄÔÐÍΪ£º
protected void finalize() throws Throwable
ÔÚfinalize()·½·¨·µ»ØÖ®ºó£¬¶ÔÏóÏûʧ£¬À¬»øÊÕ¼¯¿ªÊ¼Ö´ÐС£ÔÐÍÖеÄthrows Throwable±íʾËü¿ÉÒÔÅ׳öÈκÎÀàÐ͵ÄÒì³£¡£
Òò´Ë£¬µ±¶ÔÏó¼´½«±»Ïú»Ùʱ£¬ÓÐʱÐèÒª×öһЩÉƺó¹¤×÷¡£¿ÉÒÔ°ÑÕâЩ²Ù×÷дÔÚfinalize()·½·¨Àï¡£
ÒÔÏÂÊÇÒýÓÃƬ¶Î£º
protected void finalize() ¡¡¡¡{ ¡¡¡¡// finalization code here ¡¡¡¡}
¢Ç´úÂëʾÀý
ÒÔÏÂÊÇÒýÓÃƬ¶Î£º
class Garbage ¡¡¡¡{ ¡¡¡¡int index; ¡¡¡¡static int count; ¡¡¡¡Garbage() ¡¡¡¡{ ¡¡¡¡count++; ¡¡¡¡System.out.println("object "+count+" construct"); ¡¡¡¡setID(count); ¡¡¡¡} ¡¡¡¡void setID(int id) ¡¡¡¡{ ¡¡¡¡index=id; ¡¡¡¡} ¡¡¡¡protected void finalize() //ÖØдfinalize·½·¨ ¡¡¡¡{ ¡¡¡¡System.out.println("object "+index+" is reclaimed"); ¡¡¡¡} ¡¡¡¡public static void main(String[] args) ¡¡¡¡{ ¡¡¡¡new Garbage(); ¡¡¡¡new Garbage(); ¡¡¡¡new Garbage(); ¡¡¡¡new Garbage(); ¡¡¡¡System.gc(); //ÇëÇóÔËÐÐÀ¬»øÊÕ¼¯Æ÷ ¡¡¡¡} ¡¡¡¡}
5.Java ÄÚ´æй©
ÓÉÓÚ²ÉÓÃÁËÀ¬»ø»ØÊÕ»úÖÆ£¬Èκβ»¿É´ï¶ÔÏó(¶ÔÏó²»ÔÙ±»ÒýÓÃ)¶¼¿ÉÒÔÓÉÀ¬»øÊÕ¼¯Ï̻߳ØÊÕ¡£Òò´Ëͨ³£ËµµÄJava ÄÚ´æй©ÆäʵÊÇÖ¸ÎÞÒâʶµÄ¡¢·Ç¹ÊÒâµÄ¶ÔÏóÒýÓ㬻òÕßÎÞÒâʶµÄ¶ÔÏó±£³Ö¡£ÎÞÒâʶµÄ¶ÔÏóÒýÓÃÊÇÖ¸´úÂëµÄ¿ª·¢ÈËÔ±±¾À´ÒѾ¶Ô¶ÔÏóʹÓÃÍê±Ï£¬È´ÒòΪ±àÂëµÄ´íÎó¶øÒâÍâµØ±£´æÁ˶ԸöÔÏóµÄÒýÓÃ(Õâ¸öÒýÓõĴæÔÚ²¢²»ÊDZàÂëÈËÔ±µÄÖ÷¹ÛÒâÔ¸)£¬´Ó¶øʹµÃ¸Ã¶ÔÏóÒ»Ö±ÎÞ·¨±»À¬»ø»ØÊÕÆ÷»ØÊÕµô£¬ÕâÖÖ±¾À´ÒÔΪ¿ÉÒÔÊͷŵôµÄÈ´×îÖÕδÄܱ»ÊͷŵĿռä¿ÉÒÔÈÏΪÊDZ»¡°Ð¹Â©ÁË¡±¡£
¿¼ÂÇÏÂÃæµÄ³ÌÐò,ÔÚObjStackÀàÖÐ,ʹÓÃpushºÍpop·½·¨À´¹ÜÀí¶ÑÕ»ÖеĶÔÏó¡£Á½¸ö·½·¨ÖеÄË÷Òý(index)ÓÃÓÚָʾ¶ÑÕ»ÖÐÏÂÒ»¸ö¿ÉÓÃλÖá£push·½·¨´æ´¢¶ÔжÔÏóµÄÒýÓò¢Ôö¼ÓË÷ÒýÖµ,¶øpop·½·¨¼õСË÷ÒýÖµ²¢·µ»Ø¶ÑÕ»×îÉÏÃæµÄÔªËØ¡£ÔÚmain·½·¨ÖÐ,´´½¨ÁËÈÝÁ¿Îª64µÄÕ»,²¢64´Îµ÷ÓÃpush·½·¨ÏòËüÌí¼Ó¶ÔÏó,´ËʱindexµÄֵΪ64,ËæºóÓÖ32´Îµ÷ÓÃpop·½·¨,ÔòindexµÄÖµ±äΪ32,³öÕ»Òâζ×ÅÔÚ¶ÑÕ»ÖеĿռäÓ¦¸Ã±»ÊÕ¼¯¡£µ«ÊÂʵÉÏ,pop·½·¨Ö»ÊǼõСÁËË÷ÒýÖµ,¶ÑÕ»ÈÔÈ»±£³Ö×ŶÔÄÇЩ¶ÔÏóµÄÒýÓ᣹Ê32¸öÎÞÓöÔÏ󲻻ᱻGC»ØÊÕ,Ôì³ÉÁËÄÚ´æÉø©¡£
ÒÔÏÂÊÇÒýÓÃƬ¶Î£º
public class ObjStack { ¡¡¡¡private Object[] stack; ¡¡¡¡private int index; ¡¡¡¡ObjStack(int indexcount) { ¡¡¡¡stack = new Object[indexcount]; ¡¡¡¡index = 0; ¡¡¡¡} ¡¡¡¡public void push(Object obj) { ¡¡¡¡stack[index] = obj; ¡¡¡¡index++; ¡¡¡¡} ¡¡¡¡public Object pop() { ¡¡¡¡index--; ¡¡¡¡return stack[index]; ¡¡¡¡} ¡¡¡¡} ¡¡¡¡public class Pushpop { ¡¡¡¡public static void main(String[] args) { ¡¡¡¡int i = 0; ¡¡¡¡Object tempobj; ¡¡¡¡ObjStack stack1 = new ObjStack(64); /** newÒ»¸öObjStack¶ÔÏ󣬲¢µ÷ÓÃÓвι¹Ô캯Êý¡£·ÖÅästack ObjÊý×éµÄ * ¿Õ¼ä´óСΪ64£¬¿ÉÒÔ´æ64¸ö¶ÔÏ󣬴Ó0¿ªÊ¼´æ´¢¡£ */ ¡¡¡¡while (i < 64) ¡¡¡¡{ ¡¡¡¡tempobj = new Object(); //Ñ»·new Obj¶ÔÏ󣬰Ñÿ´ÎÑ»·µÄ¶ÔÏóÒ»Ò»´æ·ÅÔÚstack ObjÊý×éÖС£ ¡¡¡¡stack1.push(tempobj); ¡¡¡¡i++; ¡¡¡¡System.out.println("µÚ" + i + "´Î½øÕ»" + "\t"); ¡¡¡¡} ¡¡¡¡while (i > 32) ¡¡¡¡{ ¡¡¡¡tempobj = stack1.pop();//ÕâÀïÔì³ÉÁË¿Õ¼äµÄÀË·Ñ¡£ ¡¡¡¡/**ÕýÈ·µÄpop·½·¨¿É¸Ä³ÉÈçÏÂËùָʾ,µ±ÒýÓñ»·µ»Øºó, *¶Ñջɾ³ý¶ÔËûÃǵÄÒýÓÃ,Òò´ËÀ¬»øÊÕ¼¯Æ÷ÔÚÒÔºó¿ÉÒÔ»ØÊÕËûÃÇ¡£ */ ¡¡¡¡/** ¡¡¡¡* public Object pop() { * index - -; * Object temp = stack [index]; * stack [index]=null;return temp; * } ¡¡¡¡*/ ¡¡¡¡i--; ¡¡¡¡System.out.println("µÚ" + (64 - i) + "´Î³öÕ»" + "\t"); ¡¡¡¡} ¡¡¡¡} ¡¡¡¡}
ÍƼöÐÅÏ¢
- ÔÝÎ޼Ǽ
ÈÈÃÅÐÅÏ¢
- nohup: redirecting stderr to stdou....
- ʹÓÃlog_formatΪNginx·þÎñÆ÷ÉèÖøüÏêϸµÄÈÕÖ¾¸ñʽ
- jquery easyUI--dataGrid-Json
- [Ô´´]·ÂGoogle Reader¡¢ÐÂÀË΢²©¡¢ÌÚѶ΢²©µ....
- ÀûÓÃKeepalived+mysql¹¹½¨¸ß¿ÉÓÃMySQLË«Ö÷×Ô¶....
- Nginx+keepalivedʵÏÖ¸ºÔؾùºâºÍË«»úÈȱ¸¸ß¿ÉÓÃ
- jqueryʵÏÖÒ³Ãæ¼ÓÔؽø¶ÈÌõ
- Rolling cURL: PHP²¢·¢×î¼Ñʵ¼ù
- codeigniter ·ÓÉÖÕ¼«ÓÅ»¯(url rewrite)
- linuxÏÂÉèÖÃsshÎÞÃÜÂëµÇ¼
×î½ü¸üÐÂ
- java urlÖØд¼¼Êõ(UrlReWriter)
- [ת]JavaµÄÊý×飨Array£©¡¢Vector¡¢ArrayLis....
- jsp»·¾³ÏÂajaxÂÒÂëÎÊÌâµÄ½â¾ö
- JSP¼¼Êõ Ö¸Áî ÂÒÂëÎÊÌâ ÔËÐÐÔÀíºÍ¾Å´óÒþʽ¶ÔÏó web¿ª·¢µÄË....
- JAVA ˮӡ ͼƬ ÎÄ×Ö
- java¶þ½øÖÆ£¬ÔÂë¡¢·´Âë¡¢²¹Â롢λÔËËã
- Java WebÓ¦ÓÃÆô¶¯¼ä¸ôÖ´ÐеijÌÐò
- jspÉú³ÉxmlÎļþʾÀý
- javaÖÐÀà±äÁ¿¡¢Àà·½·¨¡¢ÊµÀý±äÁ¿¡¢ÊµÀý·½·¨
- JSPÒ³ÃæµÄÎåÖÖÌøת·½·¨
ÆÀÂÛ