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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÃæÏòGCµÄJava±à³Ì
 
×÷Õß @HeseyС´¿´¿,£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-07-07
  2287  次浏览      29
 

Java³ÌÐòÔ±ÔÚ±àÂë¹ý³ÌÖÐͨ³£²»ÐèÒª¿¼ÂÇÄÚ´æÎÊÌ⣬JVM¾­¹ý¸ß¶ÈÓÅ»¯µÄGC»úÖÆ´ó²¿·ÖÇé¿ö϶¼Äܹ»ºÜºÃµØ´¦Àí¶Ñ(Heap)µÄÇåÀíÎÊÌâ¡£ÒÔÖÁÓÚÐí¶àJava³ÌÐòÔ±ÈÏΪ£¬ÎÒÖ»ÐèÒª¹ØÐĺÎʱ´´½¨¶ÔÏ󣬶ø»ØÊÕ¶ÔÏ󣬾ͽ»¸øGCÀ´×ö°É£¡ÉõÖÁÓÐÈË˵£¬Èç¹ûÔÚ±à³Ì¹ý³ÌÖÐÆµ·±¿¼ÂÇÄÚ´æÎÊÌ⣬ÊÇÒ»ÖÖÍË»¯£¬ÕâЩÊÂÇéÓ¦¸Ã½»¸ø±àÒëÆ÷£¬½»¸øÐéÄâ»úÀ´½â¾ö¡£

Õâ»°ÆäʵҲûÓÐÌ«´óÎÊÌ⣬µÄÈ·£¬´ó²¿·Ö³¡¾°Ï¹ØÐÄÄÚ´æ¡¢GCµÄÎÊÌ⣬ÏÔµÃÓе㡰è½ÈËÓÇÌ족ÁË£¬¸ßÀÏү˵¹ý£º

¹ýÔçÓÅ»¯ÊÇÍò¶ñÖ®Ô´¡£

µ«ÁíÒ»·½Ã棬ʲô²ÅÊÇ¡°¹ýÔçÓÅ»¯¡±£¿

If we could do things right for the first time, why not?

ÊÂʵÉÏJVMµÄÄÚ´æÄ£ÐÍ( JMM )ÀíÓ¦ÊÇJava³ÌÐòÔ±µÄ»ù´¡ÖªÊ¶£¬´¦Àí¹ý¼¸´ÎJVMÏßÉÏÄÚ´æÎÊÌâÖ®ºó¾Í»áºÜÃ÷ÏÔ¸ÐÊܵ½£¬ºÜ¶àϵͳÎÊÌ⣬¶¼ÊÇÄÚ´æÎÊÌâ¡£

¶ÔJVMÄÚ´æ½á¹¹¸ÐÐËȤµÄͬѧ¿ÉÒÔ¿´Ï dzÎöJavaÐéÄâ»ú½á¹¹Óë»úÖÆ ÕâÆªÎÄÕ£¬±¾ÎľͲ»ÔÙ׸ÊöÁË£¬±¾ÎÄÒ²²¢²»¹Ø×¢¾ßÌåµÄGCËã·¨£¬Ïà¹ØµÄÎÄÕº¹Å£³ä¶°£¬ËæÊ±¿É²é¡£

ÁíÍ⣬²»ÒªÖ¸ÍûGCÓÅ»¯µÄÕâЩ¼¼ÇÉ£¬¿ÉÒÔ¶ÔÓ¦ÓÃÐÔÄÜÓгɱ¶µÄÌá¸ß£¬ÌرðÊǶÔI/OÃܼ¯Ð͵ÄÓ¦Ó㬻òÊÇʵ¼ÊÂäÔÚYoungGCÉϵÄÓÅ»¯£¬¿ÉÄÜЧ¹ûÖ»ÊǰïÄã¼õÉÙÄÇôһµãYoungGCµÄƵÂÊ¡£

µ«ÎÒÈÏΪ£¬ÓÅÐã³ÌÐòÔ±µÄ¼ÛÖµ£¬²»ÔÚÓÚÆäËùÕÆÎյļ¸ÕÐÍÀÁúÖ®Êõ£¬¶øÊÇÔÚϸ½ÚÖмûÕæÖø£¬¾ÍÏñÇ°ÃæËµµÄ£¬Èç¹ûÎÒÃÇ¿ÉÒÔÒ»´Î°ÑÊÂÇé×ö¶Ô£¬²¢ÇÒ×öºÃ£¬ÔÚÔÊÐíµÄ·¶Î§ÄÚ¾¡¿ÉÄÜ×·Çó׿Խ£¬ÎªÊ²Ã´²»È¥×öÄØ£¿

Ò»¡¢GC·Ö´úµÄ»ù±¾¼ÙÉè

´ó²¿·ÖGCËã·¨£¬¶¼½«¶ÑÄÚ´æ×ö·Ö´ú(Generation)´¦Àí£¬µ«ÊÇΪʲôҪ·Ö´úÄØ£¬ÓÖΪʲô²»½ÐÄÚ´æ·ÖÇø¡¢·Ö¶Î£¬¶øÒªÓÃÃæÏòʱ¼ä¡¢ÄêÁäµÄ¡°´ú¡±À´±íʾ²»Í¬µÄÄÚ´æÇøÓò£¿

GC·Ö´úµÄ»ù±¾¼ÙÉèÊÇ£º

¾ø´ó²¿·Ö¶ÔÏóµÄÉúÃüÖÜÆÚ¶¼·Ç³£¶ÌÔÝ£¬´æ»îʱ¼ä¶Ì¡£

¶øÕâЩ¶ÌÃüµÄ¶ÔÏó£¬Ç¡Ç¡ÊÇGCËã·¨ÐèÒªÊ×ÏȹØ×¢µÄ¡£ËùÒÔÔڴ󲿷ֵÄGCÖУ¬YoungGC£¨Ò²³Æ×÷MinorGC£©Õ¼Á˾ø´ó²¿·Ö£¬¶ÔÓÚ¸ºÔز»¸ßµÄÓ¦Ó㬿ÉÄÜÅÜÁËÊý¸öÔ¶¼²»»á·¢ÉúFullGC¡£

»ùÓÚÕâ¸öǰÌᣬÔÚ±àÂë¹ý³ÌÖУ¬ÎÒÃÇÓ¦¸Ã¾¡¿ÉÄܵØËõ¶Ì¶ÔÏóµÄÉúÃüÖÜÆÚ¡£ÔÚ¹ýÈ¥£¬·ÖÅä¶ÔÏóÊÇÒ»¸ö±È½ÏÖØµÄ²Ù×÷£¬ËùÒÔÓÐЩ³ÌÐòÔ±»á¾¡¿ÉÄܵؼõÉÙnew¶ÔÏóµÄ´ÎÊý£¬³¢ÊÔ¼õС¶ÑµÄ·ÖÅ俪Ïú£¬¼õÉÙÄÚ´æË鯬¡£

µ«ÊÇ£¬¶ÌÃü¶ÔÏóµÄ´´½¨ÔÚJVMÖбÈÎÒÃÇÏëÏóµÄÐÔÄܸüºÃ£¬ËùÒÔ£¬²»ÒªÁߨÄnew¹Ø¼ü×Ö£¬´óµ¨µØÈ¥new°É¡£

µ±È»Ç°ÌáÊDz»×öÎÞνµÄ´´½¨£¬¶ÔÏó´´½¨µÄËÙÂÊÔ½¸ß£¬ÄÇôGCÒ²»áÔ½¿ì±»´¥·¢¡£

½áÂÛ£º

1.·ÖÅäС¶ÔÏóµÄ¿ªÏú·ÖÏíС£¬²»ÒªÁߨÄÈ¥´´½¨¡£

2.GC×îϲ»¶ÕâÖÖС¶ø¶ÌÃüµÄ¶ÔÏó¡£

3.ÈöÔÏóµÄÉúÃüÖÜÆÚ¾¡¿ÉẠ̈ܶ¬ÀýÈçÔÚ·½·¨ÌåÄÚ´´½¨£¬Ê¹ÆäÄܾ¡¿ìµØÔÚYoungGCÖб»»ØÊÕ£¬²»»á½úÉý(romote)µ½ÄêÀÏ´ú(Old Generation)¡£

¶þ¡¢¶ÔÏó·ÖÅäµÄÓÅ»¯

»ùÓڴ󲿷ֶÔÏó¶¼ÊÇС¶ø¶ÌÃü£¬²¢ÇÒ²»´æÔÚ¶àÏ̵߳ÄÊý¾Ý¾ºÕù¡£ÕâЩС¶ÔÏóµÄ·ÖÅ䣬»áÓÅÏÈÔÚÏß³Ì˽ÓÐµÄ TLAB ÖзÖÅ䣬TLABÖд´½¨µÄ¶ÔÏ󣬲»´æÔÚËøÉõÖÁÊÇCASµÄ¿ªÏú¡£

TLABÕ¼ÓõĿռäÔÚEden Generation¡£

µ±¶ÔÏó±È½Ï´ó£¬TLABµÄ¿Õ¼ä²»×ãÒÔ·ÅÏ£¬¶øJVMÓÖÈÏΪµ±Ç°Ïß³ÌÕ¼ÓõÄTLABÊ£Óà¿Õ¼ä»¹×㹻ʱ£¬¾Í»áÖ±½ÓÔÚEden GenerationÉÏ·ÖÅ䣬´ËʱÊÇ´æÔÚ²¢·¢¾ºÕùµÄ£¬ËùÒÔ»áÓÐCASµÄ¿ªÏú£¬µ«Ò²»¹ºÃ¡£

µ±¶ÔÏó´óµ½Eden Generation·Å²»ÏÂʱ£¬JVMÖ»Äܳ¢ÊÔÈ¥Old Generation·ÖÅ䣬ÕâÖÖÇé¿öÐèÒª¾¡¿ÉÄܱÜÃ⣬ÒòΪһµ©ÔÚOld Generation·ÖÅ䣬Õâ¸ö¶ÔÏó¾ÍÖ»Äܱ»Old GenerationµÄGC»òÊÇFullGC»ØÊÕÁË¡£

Èý¡¢²»¿É±ä¶ÔÏóµÄºÃ´¦

GCËã·¨ÔÚɨÃè´æ»î¶ÔÏóʱͨ³£ÐèÒª´ÓROOT½Úµã¿ªÊ¼£¬É¨ÃèËùÓдæ»î¶ÔÏóµÄÒýÓ㬹¹½¨³ö¶ÔÏóͼ¡£

²»¿É±ä¶ÔÏó¶ÔGCµÄÓÅ»¯£¬Ö÷ÒªÌåÏÖÔÚOld GenerationÖС£

¿ÉÒÔÏëÏóһϣ¬Èç¹û´æÔÚOld GenerationµÄ¶ÔÏóÒýÓÃÁËYoung GenerationµÄ¶ÔÏó£¬ÄÇôÔÚÿ´ÎYoungGCµÄ¹ý³ÌÖУ¬¾Í±ØÐ뿼Âǵ½ÕâÖÖÇé¿ö¡£

Hotspot JVMΪÁËÌá¸ßYoungGCµÄÐÔÄÜ£¬±ÜÃâÿ´ÎYoungGC¶¼É¨ÃèOld GenerationÖеĶÔÏóÒýÓ㬲ÉÓÃÁË ¿¨±í(Card Table) µÄ·½Ê½¡£

¼òµ¥À´Ëµ£¬µ±Old GenerationÖеĶÔÏó·¢Éú¶ÔYoung GenerationÖеĶÔÏó²úÉúеÄÒýÓùØÏµ»òÊÍ·ÅÒýÓÃʱ£¬¶¼»áÔÚ¿¨±íÖÐÏìÓ¦µÄ±ê¼ÇÉϱê¼ÇΪÔà(dirty)£¬¶øYoungGCʱ£¬Ö»ÐèҪɨÃèÕâЩdirtyµÄÏî¾Í¿ÉÒÔÁË¡£

¿É±ä¶ÔÏó¶ÔÆäËü¶ÔÏóµÄÒýÓùØÏµ¿ÉÄÜ»áÆµ·±±ä»¯£¬²¢ÇÒÓпÉÄÜÔÚÔËÐйý³ÌÖгÖÓÐÔ½À´Ô½¶àµÄÒýÓã¬ÌرðÊÇÈÝÆ÷¡£ÕâЩ¶¼»áµ¼Ö¶ÔÓ¦µÄ¿¨±íÏƵ·±±ê¼ÇΪdirty¡£

¶ø²»¿É±ä¶ÔÏóµÄÒýÓùØÏµ·Ç³£Îȶ¨£¬ÔÚɨÃ迨±íʱ¾Í²»»áɨµ½ËüÃǶÔÓ¦µÄÏîÁË¡£

×¢Ò⣬ÕâÀïµÄ²»¿É±ä¶ÔÏ󣬲»ÊÇÖ¸½ö½ö×ÔÉíÒýÓò»¿É±äµÄfinal¶ÔÏ󣬶øÊÇÕæÕýµÄImmutable Objects¡£

ËÄ¡¢ÒýÓÃÖÃΪnullµÄ´«Ëµ

ÔçÆÚµÄºÜ¶àJava×ÊÁÏÖж¼»áÌáµ½ÔÚ·½·¨ÌåÖн«Ò»¸ö±äÁ¿ÖÃΪnullÄܹ»ÓÅ»¯GCµÄÐÔÄÜ£¬ÀàËÆÏÂÃæµÄ´úÂ룺

List<String> list = new ArrayList<String>();
// some code
list = null; // help GC

ÊÂʵÉÏÕâÖÖ×ö·¨¶ÔGCµÄ°ïÖú΢ºõÆä΢£¬ÓÐʱºò·´¶ø»áµ¼Ö´úÂë»ìÂÒ¡£

ÎҼǵü¸Äêǰ @rednaxelafx ÔÚHLL VMС×éÖÐÏêϸÂÛÊö¹ýÕâ¸öÎÊÌ⣬ԭÌûÎÒûÕÒµ½£¬½áÂÛ»ù±¾¾ÍÊÇ£º

1.ÔÚÒ»¸ö·Ç³£´óµÄ·½·¨ÌåÄÚ£¬¶ÔÒ»¸ö½Ï´óµÄ¶ÔÏ󣬽«ÆäÒýÓÃÖÃΪnull£¬Ä³Ö̶ֳÈÉÏ¿ÉÒÔ°ïÖúGC¡£

2.´ó²¿·ÖÇé¿öÏ£¬ÕâÖÖÐÐΪ¶¼Ã»ÓÐÈκκô¦¡£

ËùÒÔ£¬»¹ÊÇÔçµã·ÅÆúÕâÖÖ¡°ÓÅ»¯¡±·½Ê½°É¡£

GC±ÈÎÒÃÇÏëÏóµÄ¸ü´ÏÃ÷¡£

Îå¡¢ÊÖ¶¯µµµÄGC

ÔںܶàJava×ÊÁÏÉ϶¼ÓÐÏÂÃæÁ½¸öÆæ¼¼ÒùÇÉ£º

1.ͨ¹ýThread.yield()ÈóöCPU×ÊÔ´¸øÆäËüÏ̡߳£

2.ͨ¹ýSystem.gc()´¥·¢GC¡£

ÊÂʵÉÏJVM´Ó²»±£Ö¤ÕâÁ½¼þÊ£¬¶øSystem.gc()ÔÚJVMÆô¶¯²ÎÊýÖÐÈç¹ûÔÊÐíÏÔʽGC£¬Ôò»á´¥·¢FullGC£¬¶ÔÓÚÏìÓ¦Ãô¸ÐµÄÓ¦ÓÃÀ´Ëµ£¬¼¸ºõµÈͬÓÚ×Ôɱ¡£

So£¬ÈÃÎÒÃÇÀμÇÁ½µã£º

1.Never use Thread.yield()¡£

2.Never use System.gc()¡£³ý·ÇÄãÕæµÄÐèÒª»ØÊÕNative Memory¡£

µÚ¶þµãÓиöNative MemoryµÄÀýÍ⣬Èç¹ûÄãÔÚÒÔϳ¡¾°£º

1.ʹÓÃÁËNIO»òÕßNIO¿ò¼Ü£¨Mina/Netty£©

2.ʹÓÃÁËDirectByteBuffer·ÖÅä×Ö½Ú»º³åÇø

3.ʹÓÃÁËMappedByteBuffer×öÄÚ´æÓ³Éä

ÓÉÓÚNative MemoryÖ»ÄÜͨ¹ýFullGC£¨»òÊÇCMS GC£©»ØÊÕ£¬ËùÒÔ³ý·ÇÄã·Ç³£Çå³þÕâÊ±ÕæµÄÓбØÒª£¬·ñÔò²»ÒªÇáÒ×µ÷ÓÃSystem.gc()£¬ÇÒÐÐÇÒÕäϧ¡£

ÁíÍâΪÁË·ÀֹijЩ¿ò¼ÜÖеÄSystem.gcµ÷Óã¨ÀýÈçNIO¿ò¼Ü¡¢Java RMI£©£¬½¨ÒéÔÚÆô¶¯²ÎÊýÖмÓÉÏ-XX:+DisableExplicitGCÀ´½ûÓÃÏÔʽGC¡£

Õâ¸ö²ÎÊýÓиö¾Þ´óµÄ¿Ó£¬Èç¹ûÄã½ûÓÃÁËSystem.gc()£¬ÄÇôÉÏÃæµÄ3ÖÖ³¡¾°ÏµÄÄÚ´æ¾ÍÎÞ·¨»ØÊÕ£¬¿ÉÄÜÔì³ÉOOM£¬Èç¹ûÄãʹÓÃÁËCMS GC£¬ÄÇô¿ÉÒÔÓÃÕâ¸ö²ÎÊýÌæ´ú£º-XX:+ExplicitGCInvokesConcurrent¡£

¹ØÓÚSystem.gc()£¬¿ÉÒԲο¼ @bluedavy µÄ¼¸ÆªÎÄÕ£º

1.CMS GC»á²»»á»ØÊÕDirect ByteBufferµÄÄÚ´æ

2.˵˵ÔÚJavaÆô¶¯²ÎÊýÉÏÎÒ·¸µÄ´í

3.java.lang.OutOfMemoryError:Map failed

Áù¡¢Ö¸¶¨ÈÝÆ÷³õʼ»¯´óС

JavaÈÝÆ÷µÄÒ»¸öÌØµã¾ÍÊÇ¿ÉÒÔ¶¯Ì¬À©Õ¹£¬ËùÒÔͨ³£ÎÒÃǶ¼²»»áÈ¥¿¼Âdzõʼ´óСµÄÉèÖ㬲»¹»ÁË·´Õý»á×Ô¶¯À©ÈÝß¡£

µ«ÊÇÀ©Èݲ»Òâζ×ÅûÓдú¼Û£¬ÉõÖÁÊǺܸߵĴú¼Û¡£

ÀýÈçһЩ»ùÓÚÊý×éµÄÊý¾Ý½á¹¹£¬ÀýÈçStringBuilder¡¢StringBuffer¡¢ArrayList¡¢HashMapµÈµÈ£¬ÔÚÀ©ÈݵÄʱºò¶¼ÐèÒª×öArrayCopy£¬¶ÔÓÚ²»¶ÏÔö³¤µÄ½á¹¹À´Ëµ£¬¾­¹ýÈô¸É´ÎÀ©ÈÝ£¬»á´æÔÚ´óÁ¿ÎÞÓõÄÀÏÊý×飬¶ø»ØÊÕÕâЩÊý×éµÄѹÁ¦£¬È«¶¼»á¼ÓÔÚGCÉíÉÏ¡£

ÕâЩÈÝÆ÷µÄ¹¹Ô캯ÊýÖÐͨ³£¶¼ÓÐÒ»¸ö¿ÉÒÔÖ¸¶¨´óСµÄ²ÎÊý£¬Èç¹û¶ÔÓÚijЩ´óС¿ÉÒÔÔ¤¹ÀµÄÈÝÆ÷£¬½¨Òé¼ÓÉÏÕâ¸ö²ÎÊý¡£

¿ÉÊÇÒòΪÈÝÆ÷µÄÀ©Èݲ¢²»Êǵȵ½ÈÝÆ÷ÂúÁ˲ÅÀ©ÈÝ£¬¶øÊÇÓÐÒ»¶¨µÄ±ÈÀý£¬ÀýÈçHashMapµÄÀ©ÈÝãÐÖµºÍ¸ºÔØÒò×Ó(loadFactor)Ïà¹Ø¡£

Google Guava¿ò¼Ü¶ÔÓÚÈÝÆ÷µÄ³õʼÈÝÁ¿ÌṩÁ˷dz£±ã½ÝµÄ¹¤¾ß·½·¨£¬ÀýÈ磺

Lists.newArrayListWithCapacity(initialArraySize);

Lists.newArrayListWithExpectedSize(estimatedSize);

Sets.newHashSetWithExpectedSize(expectedSize);

Maps.newHashMapWithExpectedSize(expectedSize);

ÕâÑùÎÒÃÇÖ»Òª´«ÈëÔ¤¹ÀµÄ´óС¼´¿É£¬ÈÝÁ¿µÄ¼ÆËã¾Í½»¸øGuavaÀ´×ö°É¡£

·´Àý£ºÈç¹û²ÉÓÃĬÈÏÎ޲ι¹Ô캯Êý£¬´´½¨Ò»¸öArrayList£¬²»¶ÏÔö¼ÓÔªËØÖ±µ½OOM£¬ÄÇôÔڴ˹ý³ÌÖлᵼÖ£º

1.¶à´ÎÊý×éÀ©ÈÝ£¬ÖØÐ·ÖÅä¸ü´ó¿Õ¼äµÄÊý×é

2.¶à´ÎÊý×鿽±´

3.ÄÚ´æË鯬

Æß¡¢¶ÔÏó³Ø

ΪÁ˼õÉÙ¶ÔÏó·ÖÅ俪Ïú£¬Ìá¸ßÐÔÄÜ£¬¿ÉÄÜÓÐÈË»á²ÉÈ¡¶ÔÏ󳨵ķ½Ê½À´»º´æ¶ÔÏ󼯺ϣ¬×÷Ϊ¸´ÓõÄÊֶΡ£

µ«ÊǶÔÏó³ØÖеĶÔÏóÓÉÓÚÔÚÔËÐÐÆÚ³¤ÆÚ´æ»î£¬´ó²¿·Ö»á½úÉýµ½Old Generation£¬Òò´ËÎÞ·¨Í¨¹ýYoungGC»ØÊÕ¡£

²¢ÇÒͨ³£¡­¡­Ã»ÓÐʲôЧ¹û¡£

¶ÔÓÚ¶ÔÏó±¾Éí£º

1.Èç¹û¶ÔÏóºÜС£¬ÄÇô·ÖÅäµÄ¿ªÏú±¾À´¾ÍС£¬¶ÔÏó³ØÖ»»áÔö¼Ó´úÂ븴ÔÓ¶È¡£

2.Èç¹û¶ÔÏó±È½Ï´ó£¬ÄÇô½úÉýµ½Old Generationºó£¬¶ÔGCµÄѹÁ¦¾Í¸ü´óÁË¡£

´ÓḬ̈߳²È«µÄ½Ç¶È¿¼ÂÇ£¬Í¨³£³Ø¶¼Êǻᱻ²¢·¢·ÃÎʵģ¬ÄÇôÄã¾ÍÐèÒª´¦ÀíºÃͬ²½µÄÎÊÌ⣬ÕâÓÖÊÇÒ»¸ö´ó¿Ó£¬²¢ÇÒͬ²½´øÀ´µÄ¿ªÏú£¬Î´±Ø±ÈÄãÖØÐ´´½¨Ò»¸ö¶ÔÏóС¡£

¶ÔÓÚ¶ÔÏ󳨣¬Î¨Ò»ºÏÊʵij¡¾°¾ÍÊǵ±³ØÖеÄÿ¸ö¶ÔÏóµÄ´´½¨¿ªÏúºÜ´óʱ£¬»º´æ¸´ÓòÅÓÐÒâÒ壬ÀýÈçÿ´Înew¶¼»á´´½¨Ò»¸öÁ¬½Ó£¬»òÊÇÒÀÀµÒ»´ÎRPC¡£

±ÈÈç˵£º

1.Ï̳߳Ø

2.Êý¾Ý¿âÁ¬½Ó³Ø

3.TCPÁ¬½Ó³Ø

¼´Ê¹ÄãÕæµÄÐèҪʵÏÖÒ»¸ö¶ÔÏ󳨣¬Ò²ÇëʹÓóÉÊìµÄ¿ªÔ´¿ò¼Ü£¬ÀýÈçApache Commons Pool¡£

ÁíÍ⣬ʹÓÃJDKµÄThreadPoolExecutor×÷ΪÏ̳߳أ¬²»ÒªÖظ´ÔìÂÖ×Ó£¬³ý·Çµ±Äã¿´¹ýAQSµÄÔ´ÂëºóÈÏΪÄã¿ÉÒÔдµÃ±ÈDoug Lea¸üºÃ¡£

°Ë¡¢¶ÔÏó×÷ÓÃÓò

¾¡¿ÉÄÜËõС¶ÔÏóµÄ×÷ÓÃÓò£¬¼´ÉúÃüÖÜÆÚ¡£

1.Èç¹û¿ÉÒÔÔÚ·½·¨ÄÚÉùÃ÷µÄ¾Ö²¿±äÁ¿£¬¾Í²»ÒªÉùÃ÷ΪʵÀý±äÁ¿¡£

2.³ý·ÇÄãµÄ¶ÔÏóÊǵ¥ÀýµÄ»ò²»±äµÄ£¬·ñÔò¾¡¿ÉÄÜÉÙµØÉùÃ÷static±äÁ¿¡£

¾Å¡¢¸÷ÀàÒýÓÃ

java.lang.ref.ReferenceÓм¸¸ö×ÓÀ࣬ÓÃÓÚ´¦ÀíºÍGCÏà¹ØµÄÒýÓá£JVMµÄÒýÓÃÀàÐͼòµ¥À´ËµÓм¸ÖÖ£º

1.Strong Reference£¬×î³£¼ûµÄÒýÓÃ

2.Weak Reference£¬µ±Ã»ÓÐÖ¸ÏòËüµÄÇ¿ÒýÓÃʱ»á±»GC»ØÊÕ

3.Soft Reference£¬Ö»µ±ÁÙ½üOOMʱ²Å»á±»GC»ØÊÕ

4.Phantom Reference£¬Ö÷ÒªÓÃÓÚʶ±ð¶ÔÏó±»GCµÄʱ»ú£¬Í¨³£ÓÃÓÚ×öһЩÇåÀí¹¤×÷

µ±ÄãÐèҪʵÏÖÒ»¸ö»º´æÊ±£¬¿ÉÒÔ¿¼ÂÇÓÅÏÈʹÓÃWeakHashMap£¬¶ø²»ÊÇHashMap£¬µ±È»£¬¸üºÃµÄÑ¡ÔñÊÇʹÓÿò¼Ü£¬ÀýÈçGuava Cache¡£

×îºó£¬ÔÙ´ÎÌáÐÑ£¬ÒÔÉϵÄÕâЩδ±Ø¿ÉÒÔ¶Ô´úÂëÓжàÉÙÐÔÄÜÉϵÄÌáÉý£¬µ«ÊÇÊìϤÕâЩ·½·¨£¬ÊÇΪÁ˰ïÖúÎÒÃÇд³ö¸ü׿ԽµÄ´úÂ룬ºÍGC¸üºÃµØºÏ×÷¡£

   
2287 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

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

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

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

Java ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæ×ª Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö


Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ


Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëÇ¨ÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°ÑØ¼¼Êõ