1ãJavaçå
å管çå°±æ¯å¯¹è±¡çåé
åéæ¾é®é¢ã
å¨Javaä¸ï¼ç¨åºåéè¦éè¿å
³é®ånew为æ¯ä¸ªå¯¹è±¡ç³è¯·å
åç©ºé´ (åºæ¬ç±»åé¤å¤)ï¼ææç对象é½å¨å (Heap)ä¸åé
空é´ã
对象çéæ¾æ¯ç±GCå³å®åæ§è¡çã
å¨Javaä¸ï¼å
åçåé
æ¯ç±ç¨åºå®æçï¼èå
åçéæ¾æ¯æGCå®æçï¼è¿ç§æ¶æ¯ä¸¤æ¡çº¿çæ¹æ³ç®åäºç¨åºåçå·¥ä½ãä½ä¹å éäºJVMçå·¥ä½ãè¿ä¹æ¯Javaç¨åºè¿è¡é度è¾æ
¢çåå ä¹ä¸ã
GCéæ¾ç©ºé´æ¹æ³ï¼
çæ§æ¯ä¸ä¸ªå¯¹è±¡çè¿è¡ç¶æï¼å
æ¬å¯¹è±¡çç³è¯·ãå¼ç¨ã被å¼ç¨ãèµå¼çãå½è¯¥å¯¹è±¡ä¸å被å¼ç¨æ¶ï¼éæ¾å¯¹è±¡ã
2ãå
å管çç»æ
Java使ç¨æåå¾çæ¹å¼è¿è¡å
å管çï¼å¯¹äºç¨åºçæ¯ä¸ä¸ªæ¶å»ï¼æ们é½æä¸ä¸ªæåå¾è¡¨ç¤ºJVMçå
ååé
æ
åµã
å°å¯¹è±¡èè为æåå¾ç顶ç¹ï¼å°å¼ç¨å
³ç³»èè为å¾çæåè¾¹ï¼æåè¾¹ä»å¼ç¨è
æå被å¼å¯¹è±¡ãå¦å¤ï¼æ¯ä¸ªçº¿ç¨å¯¹è±¡å¯ä»¥ä½ä¸ºä¸ä¸ªå¾çèµ·å§é¡¶ç¹ï¼ä¾å¦å¤§å¤ç¨åºä»mainè¿ç¨å¼å§æ§è¡ï¼é£ä¹è¯¥å¾å°±æ¯ä»¥mainè¿ç¨é¡¶ç¹å¼å§çä¸æ£µæ ¹æ ãå¨è¿ä¸ªæåå¾ä¸ï¼æ ¹é¡¶ç¹å¯è¾¾ç对象é½æ¯ææ对象ï¼GCå°ä¸åæ¶è¿äºå¯¹è±¡ãå¦ææ个对象 (è¿éåå¾)ä¸è¿ä¸ªæ ¹é¡¶ç¹ä¸å¯è¾¾(注æï¼è¯¥å¾ä¸ºæåå¾)ï¼é£ä¹æ们认为è¿ä¸ª(è¿äº)对象ä¸å被å¼ç¨ï¼å¯ä»¥è¢«GCåæ¶ã
3ã使ç¨æåå¾æ¹å¼ç®¡çå
åçä¼ç¼ºç¹
Java使ç¨æåå¾çæ¹å¼è¿è¡å
å管çï¼å¯ä»¥æ¶é¤å¼ç¨å¾ªç¯çé®é¢ï¼ä¾å¦æä¸ä¸ªå¯¹è±¡ï¼ç¸äºå¼ç¨ï¼åªè¦å®ä»¬åæ ¹è¿ç¨ä¸å¯è¾¾çï¼é£ä¹GCä¹æ¯å¯ä»¥åæ¶å®ä»¬çã
è¿ç§æ¹å¼çä¼ç¹æ¯ç®¡çå
åç精度å¾é«ï¼ä½æ¯æçè¾ä½ã
++ï¼
å¦å¤ä¸ç§å¸¸ç¨çå
å管çææ¯æ¯ä½¿ç¨è®¡æ°å¨ï¼ä¾å¦COM模åéç¨è®¡æ°å¨æ¹å¼ç®¡çæ件ï¼å®ä¸æåå¾ç¸æ¯ï¼ç²¾åº¦è¡ä½(å¾é¾å¤ç循ç¯å¼ç¨çé®é¢)ï¼ä½æ§è¡æçå¾é«ã
â
Javaçå
åæ³é²
Javaè½ç¶ç±GCæ¥åæ¶å
åï¼ä½ä¹æ¯åå¨æ³é²é®é¢çï¼åªæ¯æ¯C++å°ä¸ç¹ã
1ãä¸C++çæ¯è¾
c++ææ对象çåé
ååæ¶é½éè¦ç±ç¨æ·æ¥ç®¡çãå³éè¦ç®¡çç¹ï¼ä¹éè¦ç®¡çè¾¹ãè¥åå¨ä¸å¯è¾¾çç¹ï¼æ æ³å¨åæ¶åé
ç»é£ä¸ªç¹çå
åï¼å¯¼è´å
åæ³é²ãåå¨æ ç¨ç对象å¼ç¨ï¼èªç¶ä¹ä¼å¯¼è´å
åæ³é²ã
Javaç±GCæ¥ç®¡çå
ååæ¶ï¼GCå°åæ¶ä¸å¯è¾¾ç对象å ç¨çå
å空é´ãæ以ï¼Javaéè¦èèçå
åæ³é²é®é¢ä¸»è¦æ¯é£äºè¢«å¼ç¨ä½æ ç¨ç对象ââå³æè¦ç®¡ç边就å¯ä»¥ã被å¼ç¨ä½æ ç¨ç对象ï¼ç¨åºå¼ç¨äºè¯¥å¯¹è±¡ï¼ä½åç»ä¸ä¼å使ç¨å®ãå®å ç¨çå
å空é´å°±æµªè´¹äºã
å¦æåå¨å¯¹è±¡çå¼ç¨ï¼è¿ä¸ªå¯¹è±¡å°±è¢«å®ä¹ä¸ºâæ´»å¨çâï¼åæ¶ä¸ä¼è¢«éæ¾ã
2ãJavaå
åæ³é²å¤ç
å¤çJavaçå
åæ³é²é®é¢ï¼ç¡®è®¤è¯¥å¯¹è±¡ä¸åä¼è¢«ä½¿ç¨ã
å
¸åçåæ³ââ
æ对象æ°æ®æå设为null
ä»éåä¸ç§»é¤è¯¥å¯¹è±¡
注æï¼å½å±é¨åéä¸éè¦æ¶ï¼ä¸éææ¾ç设为nullï¼å 为ä¸ä¸ªæ¹æ³æ§è¡å®æ¯æ¶ï¼è¿äºå¼ç¨ä¼èªå¨è¢«æ¸
çã
ä¾åï¼
List myList=new ArrayList();
for (int i=1;i<100; i++)
{
Object o=new Object();
myList.add(o);
o=null;
}
//æ¤æ¶ï¼ææçObject对象é½æ²¡æ被éæ¾ï¼å 为åémyListå¼ç¨è¿äºå¯¹è±¡ã
å½myListåæ¥ä¸åç¨å°ï¼å°ä¹è®¾ä¸ºnullï¼éæ¾ææå®å¼ç¨ç对象ãä¹åGC便ä¼åæ¶è¿äºå¯¹è±¡å ç¨çå
åã
â
对GCæä½
对GCçæä½å¹¶ä¸ä¸å®è½è¾¾å°ç®¡çå
åçææã
GC对äºç¨åºåæ¥è¯´åºæ¬æ¯éæçï¼ä¸å¯è§çãæ们åªæå 个å½æ°å¯ä»¥è®¿é®GCï¼ä¾å¦è¿è¡GCçå½æ°System.gc()ï¼System.ã
ä½æ¯æ ¹æ®Javaè¯è¨è§èå®ä¹ï¼ System.gc()å½æ°ä¸ä¿è¯JVMçåå¾æ¶éå¨ä¸å®ä¼æ§è¡ãå 为ï¼ä¸åçJVMå®ç°è
å¯è½ä½¿ç¨ä¸åçç®æ³ç®¡çGCãé常ï¼GCç线ç¨çä¼å
级å«è¾ä½ã
JVMè°ç¨GCççç¥æå¾å¤ç§ï¼æçæ¯å
å使ç¨å°è¾¾ä¸å®ç¨åº¦æ¶ï¼GCæå¼å§å·¥ä½ï¼ä¹æå®æ¶æ§è¡çï¼æçæ¯å¹³ç¼æ§è¡GCï¼æçæ¯ä¸æå¼æ§è¡GCãä½é常æ¥è¯´ï¼æ们ä¸éè¦å
³å¿è¿äºãé¤éå¨ä¸äºç¹å®çåºåï¼GCçæ§è¡å½±ååºç¨ç¨åºçæ§è½ï¼ä¾å¦å¯¹äºåºäºWebçå®æ¶ç³»ç»ï¼å¦ç½ç»æ¸¸æçï¼ç¨æ·ä¸å¸æGCçªç¶ä¸æåºç¨ç¨åºæ§è¡èè¿è¡åå¾åæ¶ï¼é£ä¹æ们éè¦è°æ´GCçåæ°ï¼è®©GCè½å¤éè¿å¹³ç¼çæ¹å¼éæ¾å
åï¼ä¾å¦å°åå¾åæ¶å解为ä¸ç³»åçå°æ¥éª¤æ§è¡ï¼Sunæä¾çHotSpot JVMå°±æ¯æè¿ä¸ç¹æ§ã
â
å
åæ³é²æ£æµ
å¸åºä¸å·²æå ç§ä¸ä¸æ£æ¥Javaå
åæ³æ¼çå·¥å
·ï¼å®ä»¬çåºæ¬å·¥ä½åç大åå°å¼ï¼é½æ¯éè¿çæµJavaç¨åºè¿è¡æ¶ï¼ææ对象çç³è¯·ãéæ¾çå¨ä½ï¼å°å
å管ççææä¿¡æ¯è¿è¡ç»è®¡ãåæãå¯è§åãå¼å人åå°æ ¹æ®è¿äºä¿¡æ¯å¤æç¨åºæ¯å¦æå
åæ³æ¼é®é¢ãè¿äºå·¥å
·å
æ¬Optimizeit Profilerï¼JProbe Profilerï¼JinSight , Rational å
¬å¸çPurifyçã
å¨è¿è¡è¿ç¨ä¸ï¼æ们å¯ä»¥éæ¶è§å¯å
åç使ç¨æ
åµï¼éè¿è¿ç§æ¹å¼ï¼æ们å¯ä»¥å¾å¿«æ¾å°é£äºé¿æä¸è¢«éæ¾ï¼å¹¶ä¸ä¸å使ç¨ç对象ãæ们éè¿æ£æ¥è¿äºå¯¹è±¡ççåå¨æï¼ç¡®è®¤å
¶æ¯å¦ä¸ºå
åæ³é²ã
â
软å¼ç¨
ç¹ç¹ï¼åªæå½å
åä¸å¤çæ¶åæåæ¶è¿ç±»å
åï¼åæ¶åä¿è¯å¨JavaæåºOutOfMemoryå¼å¸¸ä¹åï¼è¢«è®¾ç½®ä¸ºnullã
ä¿è¯æ大é度ç使ç¨å
åèä¸å¼èµ·OutOfMemoryå¼å¸¸ã
å¨æäºæ¶å对软å¼ç¨ç使ç¨ä¼éä½åºç¨çè¿è¡æçä¸æ§è½ï¼ä¾å¦ï¼åºç¨è½¯å¼ç¨ç对象çåå§åè¿ç¨è¾ä¸ºèæ¶ï¼æè
对象çç¶æå¨ç¨åºçè¿è¡è¿ç¨ä¸åçäºååï¼é½ä¼ç»éæ°å建对象ä¸åå§å对象带æ¥ä¸åç¨åº¦ç麻ç¦ã
ç¨éï¼
å¯ä»¥ç¨äºå®ç°ä¸äºå¸¸ç¨èµæºçç¼åï¼å®ç°Cacheçåè½
å¤çä¸äºå ç¨å
å大èä¸å£°æå¨æè¾é¿ï¼ä½ä½¿ç¨å¹¶ä¸é¢ç¹ç对象æ¶åºå°½éåºç¨è¯¥ææ¯
â
javaç¨åºè®¾è®¡ä¸æå
³å
å管ççç»éª
1ï¼æåºæ¬ç建议æ¯å°½æ©éæ¾æ ç¨å¯¹è±¡çå¼ç¨ãå¦ï¼
...
A a = new A();
//åºç¨a对象
a = null; //å½ä½¿ç¨å¯¹è±¡aä¹å主å¨å°å
¶è®¾ç½®ä¸ºç©º
â¦.
注ï¼å¦æa æ¯æ¹æ³çè¿åå¼ï¼ä¸è¦åè¿æ ·çå¤çï¼å¦åä½ ä»è¯¥æ¹æ³ä¸å¾å°çè¿åå¼æ°¸è¿ä¸ºç©ºï¼èä¸è¿ç§é误ä¸æ被åç°ãæé¤
2ï¼å°½éå°ç¨finalizeå½æ°ãå®ä¼å 大GCçå·¥ä½éã
3ï¼å¦æéè¦ä½¿ç¨ç»å¸¸ç¨å°çå¾çï¼å¯ä»¥ä½¿ç¨softåºç¨ç±»åãå®å°½å¯è½æå¾çä¿åå¨å
åä¸
4ï¼æ³¨æéåæ°æ®ç±»åï¼å
æ¬æ°ç»ãæ ãå¾ãé¾è¡¨çæ°æ®ç»æï¼è¿äºæ°æ®ç»æ对GCæ¥è¯´ï¼åæ¶æ´ä¸ºå¤æã
5ï¼å°½éé¿å
å¨ç±»çé»è®¤æé å¨ä¸å建ãåå§å大éç对象ï¼é²æ¢å¨è°ç¨å
¶èªç±»çæé å¨æ¶é æä¸å¿
è¦çå
åèµæºæµªè´¹
6ï¼å°½éé¿å
强å¶ç³»ç»ååå¾å
åçåæ¶ï¼å¢é¿ç³»ç»ååå¾åæ¶çæç»æ¶é´
7ï¼å°½éé¿å
æ¾å¼ç³è¯·æ°ç»ç©ºé´
8ï¼å°½éåè¿ç¨æ¹æ³è°ç¨ç±»åºç¨å¼åæ¶ä½¿ç¨ç¬é´å¼åéï¼é¤éè¿ç¨è°ç¨ç«¯éè¦è·å该ç¬é´å¼åéçå¼ã
9ï¼å°½éå¨åéçåºæ¯ä¸ä½¿ç¨å¯¹è±¡æ± ææ¯ä»¥æé«ç³»ç»æ§è½ã
温馨提示:答案为网友推荐,仅供参考