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.ÈíÒýÓÃ
Ïà¹ØÎĵµ£º
½ñÌì³é¿ÕÏÂÁË¡¶java½â»ó¡·Õâ±¾Êé¿´ÁËһϣ¬È·Êµ²»´í£¬Ìá³öÁ˺ܶàÎÒÃÇÆ½Ê±²»»á×¢ÒâµÄСÎÊÌâ¡£ÏëÏëÈç¹û²»×¢Òâ˵²»¶¨»áÒòΪһ¸öBUGÓôÃÆ¸öÒ»Á½ÌìÒ²ÕÒ²»µ½¡£ÒÔÏÂÊÇ×ܽáµÄ±Ê¼Ç£¬±¸Íü~~
1.ÅÐ¶ÏÆæÊý
i % 2 == 1 ÔÚi Ϊ¸ºÊýʱ½á¹ûΪ-1£¬ËùÒÔʹÓÃi % 2 != 0À´Åжϣ»µ±ÓÐÐÔÄÜÒªÇóʱʹÓà (i & 1) != 0¡£
*ÔÚʹÓÃ%ʱһ¶¨Òª¿¼Âǵ ......
ÏÈ¿´¿´ÏÂÃæµÄ´úÂ룬´ó¼Ò²Â²ÂÊä³öÊÇʲô
package com.captain.test;
public class ArrayTest {
public static void main(String[] args){
//н¨Ò»¸ö¶ÔÏó£¨OneNum£©Êý×飨¸³ÖµÎª5¡¢3¡¢4£©
OneNum[] ac = {new OneNum(5),new OneNum(3),new OneNum(4)};
//н¨Ò»¸öÓëacͬ³¤¶ÈµÄ¶ÔÏó£¨OneNum£©Êý×é
OneNum[] n ......
Java´úÂë
final TC[] ts = new TC[20];
for (int i = 0; i < ts.length; i++) {
......
·ºÐÍ£¨Generic type »òÕßgenerics£©ÊÇ¶Ô Java ÓïÑÔµÄÀàÐÍϵͳµÄÒ»ÖÖÀ©Õ¹£¬ÒÔÖ§³Ö´´½¨¿ÉÒÔ°´ÀàÐͽøÐвÎÊý»¯µÄÀà¡£¿ÉÒÔ°ÑÀàÐͲÎÊý¿´×÷ÊÇʹÓòÎÊý»¯ÀàÐÍʱָ¶¨µÄÀàÐ͵ÄÒ»¸öռλ·û£¬¾ÍÏñ·½·¨µÄÐÎʽ²ÎÊýÊÇÔËÐÐʱ´«µÝµÄÖµµÄռλ·ûÒ»Ñù¡£
¿ÉÒÔÔÚ¼¯ºÏ¿ò¼Ü£¨Collection framework£©Öп´µ½·ºÐ͵͝»ú¡£ÀýÈ磬MapÀàÔÊÐíÄúÏòÒ»¸öMapÌí ......
JDK1.5ÖеÄÏ̳߳Ø(java.util.concurrent.ThreadPoolExecut
6
ÍÆ¼ö
ÔÚ¶àÏ̴߳óʦDoug LeaµÄ¹±Ï×Ï£¬ÔÚJDK1.5ÖмÓÈëÁËÐí¶à¶Ô²¢·¢ÌØÐÔµÄÖ§³Ö£¬ÀýÈ磺Ï̳߳ء£
Ò»¡¢¼ò½é
Ï̳߳ØÀàΪ java.util.concurrent.ThreadPoolExecutor£¬³£Óù¹Ôì·½·¨Îª£º
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
long keepA ......