JavaÄÚ´æ¹ÜÀí(¶þ¡¢JavaÀ¬»ø»ØÊÕ)
¶þ¡¢JavaÀ¬»ø»ØÊÕ
1. JVMÔËÐл·¾³ÖÐÀ¬»ø¶ÔÏóµÄ¶¨Òå
Ò»¸ö¶ÔÏó´´½¨ºó±»·ÅÖÃÔÚJVMµÄ¶ÑÄÚ´æÖУ¬µ±ÓÀÔ¶²»ÔÙÒýÓÃÕâ¸ö¶ÔÏóʱ£¬Ëü½«±»JVMÔÚ¶ÑÄÚ´æÖлØÊÕ¡£»ò µ±¶ÔÏóÔÚJVMÔËÐпռäÖÐÎÞ·¨Í¨¹ý¸ù¼¯ºÏ(root set)µ½´ïʱ£¬Õâ¸ö¶ÔÏó¾Í±»³ÆÎªÀ¬»ø¶ÔÏó¡£
2. ¶ÑÄÚ´æ
* ÔÚJVMÆô¶¯Ê±±»´´½¨£»¶ÑÄÚ´æÖÐËù´æ´¢µÄ¶ÔÏó¿ÉÒÔ±»JVM×Ô¶¯»ØÊÕ£¬²»ÄÜͨ¹ýÆäËûÍⲿÊֶλØÊÕ
* ¶ÑÄÚ´æ¿É·ÖΪÁ½¸öÇøÓò£ºÐ¶ÔÏóÇøºÍÀ϶ÔÏóÇø
-- жÔÏóÇø¿É·ÖΪÈý¸öÐ¡Çø£ºEdenÇø¡¢fromÇø¡¢ToÇø
EdenÇøÓÃÀ´±£´æÐ´´½¨µÄ¶ÔÏ󣬵±EdenÇøÖеĶÔÏóÂúÁËÖ®ºó£¬JVM½«»á×ö¿É´ïÐÔ²âÊÔ£¬¼ì²âÓÐÄÄЩ¶ÔÏóÓɸù¼¯ºÏ³ö·¢ÊDz»¿É´ïµÄ£¬²»¿É´ïµÄ¶ÔÏó¾Í»á±» JVM»ØÊÕ£¬²¢½«ËùÓеĻ¶ÔÏó´ÓEdenÇø¿½µ½ToÇø£¬´ËʱһЩ¶ÔÏ󽫷¢Éú״̬½»»»£¬ÓеĶÔÏó¾Í´ÓToÇø±»×ªÒƵ½fromÇø¡£
3. JVMÖжÔÏóµÄÉúÃüÖÜÆÚ
* ´´½¨½×¶Î(²½Öè)
-- Ϊ¶ÔÏó·ÖÅä´æ´¢¿Õ¼ä
-- ¿ªÊ¼¹¹Ôì¶ÔÏó
-- µÝ¹éµ÷ÓÃÆä³¬ÀàµÄ¹¹Ôì·½·¨
-- ½øÐжÔÏóʵÀý³õʼ»¯Óë±äÁ¿³õʼ»¯
-- Ö´Ðй¹Ôì·½·¨Ìå
* Ó¦Óý׶Î
-- ÌØÕ÷£ºÏµÍ³ÖÁÉÙά»¤×ŶÔÏóµÄÒ»¸öÇ¿ÒýÓã»ËùÓжԸöÔÏóÒýÓÃÇ¿ÒýÓÃ(³ý·ÇÏÔʾÉùÃ÷ΪÆäËüÒýÓÃ)
-- Ç¿ÒýÓÃ
Ö¸JVMÄÚ´æ¹ÜÀíÆ÷´Ó¸ùÒýÓü¯ºÏ³ö·¢£¬±éѰ¶ÑÖÐËùÓе½´ï¶ÔÏóµÄ·¾¶¡£µ±µ½´ïij¶ÔÏóµÄÈÎÒâ·¾¶¶¼²»º¬ÓÐÒýÓöÔÏóʱ£¬¶ÔÕâ¸ö¶ÔÏóµÄÒýÓþͱ»³ÆÎªÇ¿ÒýÓá£
µ±ÄÚ´æ²»×ãʱ£¬JVMÄþÔ¸Å׳öOutOfMemeryError´íÎóʹ³ÌÐòÍ£Ö¹£¬Ò²²»»á¿¿ÊջؾßÓÐÇ¿ÒýÓõĶÔÏóÀ´ÊÍ·ÅÄÚ´æ¿Õ¼ä
-- ÈíÒýÓÃ
ËüÄÜʵÏÖcache¹¦ÄÜ£¬·ÀÖ¹×î´óÏ޶ȵÄʹÓÃÄÚ´æÊ±ÒýÆðµÄOutOfMemoryÒì³££¬ÔÚÄÚ´æ²»¹»ÓõÄʱºòjvm»á×Ô¶¯»ØÊÕSoft Reference¡£
ÈíÒýÓÿÉÒÔºÍÒ»¸öÒýÓöÓÁÐ(ReferenceQueue)ÁªºÏʹÓã¬Èç¹ûÈíÒýÓÃËùÒýÓõĶÔÏó±»À¬»ø»ØÊÕ£¬javaÐéÄâ»ú¾Í»á°ÑÕâ¸öÈíÒýÓüÓÈëµ½ÓëÖ®¹ØÁªµÄÒýÓöÓÁÐÖС£
JavaÖÐÌṩÈíÒýÓõİü£ºjava.lang.ref.SoftReference(ºóÐøÏê½â)
ÈíÒýÓÃ
ʵÏÖcache¹¦ÄÜ,·ÀÖ¹×î´óÏ޶ȵÄʹÓÃÄÚ´æÊ±ÒýÆðµÄOutOfMemoryÒì³£,ÔÚÄÚ´æ²»¹»ÓõÄʱºòjvm»á×Ô¶¯»ØÊÕSoft Reference.ÈíÒýÓÃ
Ïà¹ØÎĵµ£º
¶¨Ê±Æ÷ÀàTimerÔÚjava.util°üÖС£Ê¹ÓÃʱ£¬ÏÈʵÀý»¯£¬È»ºóʹÓÃʵÀýµÄschedule(TimerTask task, long delay)·½·¨£¬É趨ָ¶¨µÄÈÎÎñtaskÔÚÖ¸¶¨µÄÑÓ³ÙdelayºóÖ´ÐС£¶¨Ê±Æ÷ÈÎÎñÀàTimerTaskÊdzéÏóÀ࣬¼Ì³Ð²¢ÖØÐ´Æärun()·½·¨£¬¿ÉʵÏÖ¾ßÌåÈÎÎñ¡£
schedule(TimerTask task, Date time)É趨ָ¶¨ÈÎÎñtaskÔÚÖ¸¶¨Ê±¼ätimeÖ´ÐС£
cancel ......
½ñÌì³é¿ÕÏÂÁË¡¶java½â»ó¡·Õâ±¾Êé¿´ÁËһϣ¬È·Êµ²»´í£¬Ìá³öÁ˺ܶàÎÒÃÇÆ½Ê±²»»á×¢ÒâµÄСÎÊÌâ¡£ÏëÏëÈç¹û²»×¢Òâ˵²»¶¨»áÒòΪһ¸öBUGÓôÃÆ¸öÒ»Á½ÌìÒ²ÕÒ²»µ½¡£ÒÔÏÂÊÇ×ܽáµÄ±Ê¼Ç£¬±¸Íü~~
1.ÅÐ¶ÏÆæÊý
i % 2 == 1 ÔÚi Ϊ¸ºÊýʱ½á¹ûΪ-1£¬ËùÒÔʹÓÃi % 2 != 0À´Åжϣ»µ±ÓÐÐÔÄÜÒªÇóʱʹÓà (i & 1) != 0¡£
*ÔÚʹÓÃ%ʱһ¶¨Òª¿¼Âǵ ......
ѸÀ×ÃæÊÔ»ØÀ´£¬ÓÃÁËÕûÕûÒ»ÏÂÎ磨²»ÖªµÀÔõô˵ÁË£¬ÆäÖеȴýʱ¼ä¶¼¿ì2СʱÁË£©£¬×Ô¼º¸Ð¾õ±ÊÊÔºÍÉÏ»ú»¹¿ÉÒÔ£¬µ«¼¼ÊõÃæÌ¸ÕâÒ»¹Ø´ðµÃ²»Ì«ºÃ£¬ÏÖÔÚÔٴθоõ»¥ÁªÍø¹«Ë¾ÓëÒ»°ãÈí¼þ¹«Ë¾µÄÇø±ðÁË£¬ÆäÖÐÒ»µã¾ÍÊÇ»¥ÁªÍøÓ¦ÓÃÔÚÐÔÄÜÉÏÒªÇóºÜ¸ß£¬Ì¸ÁËÒ»¸öСʱ´ó²¿·ÖÌâÄ¿¸Ð¾õ¶¼ÔÚ̸ÂÛÐÔÄÜÎÊÌ⣬×Ô¼ºÔÚ·½ÃæÒ»Ö±ÊÇÈõÏº¹°¡£º£¨
×Ðϸ»ØÒäÁË ......
¸Õ²ÅÔÚ×ö¸ö²âÊÔʱ ɾ³ýÎļþÀÏÊÇʧ°Ü...Ò»Ö±ÕÒ²»µ½ÔÒò.. file.delete();
×ÜÊÇ·µ»Øfalse.
ÔÚÍøÉÏÕÒÁ˰ëÌì ¶¼ÕÒ²»µ½´íÔÚÄĶù..
if(file.exists() && file.canWrite())
file.delete();
ÕâÑù¶¼²»ÐС
ºóÀ´Í»È»Í»È»Ïëµ½´íÔÚÄĶùÁË..
¾ÍÊÇÔÚдÍêÎļþºóûÓÐclose
out.write(b);
out.flush();
out.close();
......