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.ÈíÒýÓÃ
Ïà¹ØÎĵµ£º
import java.awt.*;
import java.awt.event.*;
public class TestFrame {
Frame fm = new Frame();
public void init(){
fm.setSize(300,300);
Button btn = new Button("ok");
fm.add(btn);
btn.addActionListener(ne ......
1£¬Ò»ÐдúÂë×öÒ»¼þÊ£¬²»ÒªÔÚÒ»ÐдúÂëÀïÃæ´¦Àí¶à¼þÊ¡£ÄþÔ¸¶àÉùÃ÷¼¸¸ö±äÁ¿£¬Ò²Òª±£³Ö´úÂëµÄÇåÎú£¬ÒòΪ´úÂëµÄÉùÃ÷²¢²»»áÕ¼¶àÉÙÄÚ´æ¡£
ÀýÈ磺
String tmpa = errIdList.get(i).toString().substring(2);
......
Ëæ×ŶàºË CPU µÄÈÕÒæÆÕ¼°£¬Ô½À´Ô½¶àµÄ Java Ó¦ÓóÌÐòʹÓöàÏ̲߳¢ÐмÆËãÀ´³ä·Ö·¢»ÓÕû¸öϵͳµÄÐÔÄÜ¡£¶àÏ̵߳ÄʹÓÃÒ²¸øÓ¦ÓóÌÐò¿ª·¢ÈËÔ±´øÀ´Á˾޴óµÄÌôÕ½£¬²»ÕýÈ·µØÊ¹ÓöàÏ߳̿ÉÄÜÔì³ÉÏß³ÌËÀËø»ò×ÊÔ´¾ºÕù£¬µ¼ÖÂϵͳ̱»¾¡£Òò´Ë£¬ÐèÒªÒ»ÖÖÔËÐÐʱÏß³Ì¼à¿Ø¹¤¾ßÀ´°ïÖú¿ª·¢ÈËÔ±Õï¶ÏºÍ¸ú×Ù Java Ïß³Ì״̬µÄÇл»¡£JDK 1.5 ¼°ÆäºóÐø°æ± ......
1£©¹Ù·½ÍøÕ¾
ÔÚѧϰһ¸ö¼¼Êõǰֱµ½¹Ù·½ÍøÕ¾ÊǼ«Îª±ØÒªµÄ£¬¹Ù·½ÍøÕ¾²»µ«Ìṩ°²×°½éÖÊ£¬¶øÇÒÓÐÒ»Êֵļ¼Êõ²Î¿¼×ÊÁÏ¡£Ïл°¼ò˵ http://www.springsource.com/¡£ ÒÔÇ°ÔøÓùýspringframework.org£¬²»ÖªµÀΪʲôҪ¸ÄÁËÃû×Ö¡£
2£©¾µä²Î¿¼Êé
ÓÐÈËÍÆ¼ö¹ýSpring In Action£¬ ÎÒ×Ô¼ºÊÇ´ÓSpring Reference¿ªÊ¼¶ÁµÄ¡£
3£©Á÷Ðеİ汾
......
ÔÚ Java 5 »·¾³ÖУ¬Èç¹ûÓÃÀàAȥʵÏÖ½Ó¿ÚB (A implements B)£¬ÔÚ Java 5 µÄƽ̨Ï£¬A ʵÏֵķ½·¨ÃûǰÊDz»ÄÜÌí¼Ó @Override ±ê¼ÇµÄ£¬·ñÔò»á±¨ÈçÏÂͼËùʾµÄ´íÎóÌáʾ¶øÎÞ·¨±àÒ룺
{{----}}16172
¾¹ý³¢ÊÔºÍ×ܽᣬµÃ³öÏÂ±í¡£
Version
Java 5
Java 6
³¬ÀàÐÍÊÇ interface£¬×ÓÀàÐÍÖØÐ´µÄ·½·¨ÄÜ·ñÌí¼Ó@Override ±ê¼Ç
·ñ
ÊÇ
......