# Java # åºç¡ ## 1. ä»ä¹æ¯é¢å对象ï¼OOPï¼ï¼ é¢å对象ç¼ç¨æ¯ä½¿ç¨ç±»ï¼å¯¹è±¡ï¼ç»§æ¿æ§ï¼å¤ææ§ï¼å°è£ æ§åæ½è±¡çä¸ç§ç¨åºè®¾è®¡æ¹æ³ã é¦å æä»¬è¦åºåä¸ä¸âåºäºå¯¹è±¡âåâé¢å对象âçåºå«ã 1. åºäºå¯¹è±¡ï¼é常æçæ¯å¯¹æ°æ®çå°è£ ï¼ä»¥åæä¾ä¸ç»æ¹æ³å¯¹å°è£ è¿çæ°æ®æä½ã 2. é¢å对象ï¼åå¨åºäºå¯¹è±¡çåºç¡ä¸å¢å äºå¤ææ§ãæè°å¤æï¼å°±æ¯å¯ä»¥ç¨ç»ä¸çæ¹æ³å¯¹ä¸åç对象è¿è¡åæ ·çæä½ã [ä»ä¹æ¯é¢å对象ï¼OOPï¼ï¼](https://www.jianshu.com/p/7a5b0043b035) ## 2. ä»ä¹æ¯å¤æï¼å®ç°å¤æçæºå¶æ¯ä»ä¹ï¼ 夿å³ï¼äºç©å¨è¿è¡è¿ç¨ä¸åå¨ä¸åçç¶æã夿å¯ä»¥å为ç¼è¯æ¶å¤æåè¿è¡æ¶å¤æï¼ç¼è¯æ¶å¤ææ¯ææ¹æ³çéè½½ï¼è¿è¡æ¶å¤ææ¯ææ¹æ³çéåã 对äºè¿è¡æ¶å¤æéè¦æ»¡è¶³ä»¥ä¸ä¸ä¸ªæ¡ä»¶ï¼ 1. è¦æç»§æ¿å ³ç³» 2. åç±»éåç¶ç±»æ¹æ³ 3. ç¶ç±»å¯¹è±¡çå¼ç¨æåå类对象ï¼SuperClass class = new ChildClass() ï¼ é£ä¹å¤æå®ç°çæºå¶æ¯ä»ä¹å¢ï¼ å ¶å®å°±æ¯ä¾é éæåæ´¾å卿忴¾ã éæåæ´¾å³å¨ç¼è¯æé´å°±è½å®å ¨ç¡®å®ï¼å¨ç±»å è½½çè§£æé¶æ®µå°±ä¼æææ¶åç符å·å¼ç¨è½¬å为å¯ç¡®å®çç´æ¥å¼ç¨ï¼ä¸ä¼å»¶è¿å°è¿è¡æåå»å®æï¼å ¸åçä¾åå°±æ¯æ¹æ³éè½½ã 卿忴¾æ¯æå¨è¿è¡æé´æè½ç¡®å®åéçå®é ç±»åï¼å ¸åçä¾åå°±æ¯æ¹æ³çéåãåªæå¨è¿è¡æé´ï¼æ ¹æ®å¯¹å®ä¾ååç±»çä¸åï¼è°ç¨ä¸ååç±»ä¸éåçæ¹æ³ã åèï¼[夿æ§å®ç°æºå¶ââéæåæ´¾ä¸å¨æåæ´¾](https://www.jianshu.com/p/1976b01c07d2) ## 3. æ¥å£ï¼Interfaceï¼ä¸æ½è±¡ç±»ï¼Abstract Classï¼çåºå«ï¼ æ½è±¡ç±»æ¯ä¸ä¸ªå¯åæ¶å å«å ·ä½æ¹æ³åæ½è±¡æ¹æ³(æ¹æ³æªè¢«å®ç°)çç±»ãæ½è±¡æ¹æ³å¿ 须被该æ½è±¡ç±»çåç±»å®ç°ãæ½è±¡ç±»æ¯å¯ä»¥ç»§æ¿çã æ¥å£åæ¯æè¿°ç±»çä¸å¼ è徿è 说æ¯ç±»çä¸ç§å¥çº¦ï¼å®å å«äºè®¸å¤ç©ºæ¹æ³ï¼è¿ä»£è¡¨çå®çææçåç±»é½åºè¯¥æ¥æå ±åç¹ãå®çåç±»åºè¯¥æä¾è¿äºç©ºæ¹æ³çå ·ä½å®ç°ãä¸ ä¸ªç±»éè¦ç¨ implements æ¥å®ç°æ¥å£ï¼æ¥å£å¯ä»¥ç¨ extends æ¥ç»§æ¿å ¶ä»æ¥å£ã [æ¥å£ï¼Interfaceï¼ä¸æ½è±¡ç±»ï¼Abstract Classï¼çåºå«ï¼](https://www.jianshu.com/p/c4f023d02f0c) ## 4. éåï¼Overrideï¼ä¸éè½½ï¼Overloadï¼çåºå«? 1. è¦çæ¯åç±»ä¸ç¶ç±»ä¹é´çå ³ç³»ï¼æ¯ä¸ç§åç´å ³ç³»ï¼éè½½æ¯åä¸ä¸ªç±»ä¸æ¹æ³ä¹é´çå ³ç³»ï¼æ¯æ°´å¹³å ³ç³» 2. è¦çåªè½ç±ä¸ä¸ªæ¹æ³æè åªè½ç±ä¸å¯¹æ¹æ³äº§çå ³ç³»ï¼éè½½æ¯å¤ä¸ªæ¹æ³ä¹é´çå ³ç³» 3. è¦çè¦æ±åæ°å表è¦ç¸åï¼éè½½è¦æ±åæ°å表ä¸å 4. è¦çå ³ç³»ä¸ï¼è°ç¨æ¹æ³ä½æ¯æ ¹æ®å¯¹è±¡çç±»åï¼å¯¹è±¡å¯¹åºåå¨ç©ºé´ç±»åï¼å³å®ï¼éè½½æ¯æ ¹æ®è°ç¨çæ¶åå®å表åå½¢å表æ¥éæ©æ¹æ³ ## 5. ç¶ç±»çéææ¹æ³è½å¦è¢«åç±»éåï¼ ä¸¥æ ¼æ¥è¯´ï¼ä¸åå¨éææ¹æ³çéåï¼å½ä¸ä¸ªå类继æ¿ç¶ç±»æ¶ï¼ååæ ·çæ¹æ³æ¶ï¼åªæ¯å°ç¶ç±»çéææ¹æ³éèã ## 6. éæå±æ§åéææ¹æ³æ¯å¦å¯ä»¥è¢«ç»§æ¿ï¼æ¯å¦å¯ä»¥è¢«éåï¼ä¸ºä»ä¹ï¼ éæå±æ§åæ¹æ³å¯ä»¥è¢«ç»§æ¿ï¼ä½æ¯ä¸å¯ä»¥è¢«éåï¼ä¸è¬éæå±æ§åæ¹æ³å±äºä¸ä¸ªç±»ï¼èé对象ï¼å¨å åä¸ä¸è¬åªä¿åä¸ä»½ã ## 7. ä»ä¹æ¯å é¨ç±»ï¼å é¨ç±»ãéæå é¨ç±»ãå±é¨å é¨ç±»åå¿åå é¨ç±»çåºå«åä½ç¨ï¼ ## 8. == å equals() å hashCode() çåºå«ï¼ == å equals 齿¯æ¯è¾ï¼å¼æ¸ æ¥ == å equals å嫿¯è¾çæ¯ä»ä¹ï¼å åå°åï¼è¿æ¯å åå°åä¸çå 容ï¼ï¼èªç¶å°±ç¥éäº==åequalsæä»ä¹åºå«ã java对象é½åå¨äºå åä¸ï¼è¦æ¸ æ¥æä»¬è¦æ¯è¾çå°åºæ¯å åçå°åï¼è¿æ¯å åä¸çå¼ã å çå æ®µä»£ç ï¼ ``` String s1 = "AAAAA"; String s2 = "AAAAA"; System.out.println(s1 == s2); // true System.out.println(s1.equals(s2)); // true ``` ``` String s3 = new String("BBBBB"); String s4 = new String("BBBBB"); System.out.println(s3 == s4); // false System.out.println(s3.equals(s4)); // true ``` ``` Integer A = new Integer(20); Integer B = new Integer(20); System.out.println(A == B); // false System.out.println(A.equals(B)); // true ``` æä»¬ååå«ççStringç±»åIntegerç±»ä¸equalsæ¹æ³çæºç ï¼ ``` public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } ``` ``` public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; } ``` ä»Stringç±»åIntegerç±»çequalsæ¹æ³ä¸ï¼å¯ä»¥çå°ï¼equalsçæ¯è¾ï¼æåè¿æ¯è¿ç¨!=æè ==è¿ç®ç¬¦æ¥è¿è¡æ¯è¾ã**è䏿¯è¾çï¼é½æ¯å¯¹è±¡ä¸çå¼ã** --- Java䏿æçç±»ï¼é½æ¯ä»Objectç»§æ¿èæ¥ï¼ä¹å°±æ¯è¯´ï¼Objectæ¯ææJavaç±»çåºç±»ã Objectç±»ä¸ç彿°å¹¶ä¸å¤ï¼equalsæ¹æ³å°±æ¯å ¶ä¸çä¸ä¸ªï¼ççequalså¨Objectç±»ä¸çæºç ï¼ ``` public boolean equals(Object obj) { return (this == obj); } ``` ä»Objectæºç ä¸å¯ä»¥çå°ï¼equalsæ¹æ³æç»è°ç¨çæ¯\==è¿è¡æ¯è¾çï¼é£è¿éç\==æ¯è¾çæ¯ä»ä¹å¢ï¼ **çï¼æ¯è¾çæ¯è¿ä¸ªä¸è¥¿ââjava.lang.Object@15db9742ã** è¿æ¯ä»ä¹ï¼ **çï¼è¿æ¯Objectç±»ä¸toStringæ¹æ³çè¿åå¼ã** é£åæ¥ççObjectç±»ä¸toStringæ¹æ³çæºç ï¼ ``` public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } ``` Objectç±»toStringæ¹æ³è¿åçè¿ä¸ä¸²ä¸è¥¿java.lang.Object@15db9742æ¯ä¸ä¸ªå¯¹è±¡çç±»ååhashå¼ï¼**è¿ä¸ªhashå¼å¯ä»¥ç解为å åå°å**ã æä»¥Objcetç±»ä¸equalsæ¹æ³ï¼æ¯è¾çæ¯ä¸¤ä¸ªå åå°åï¼è䏿¯å åå°åä¸çå¼ã --- **ç»è®ºï¼** **equalså==齿¯è¿è¡æ¯è¾æä½ï¼ä½æ¯ä¸ä¸ªå¯¹è±¡å¯æ¯è¾çä¸è¥¿æå¾å¤ï¼æ¯å¦å åå°åï¼å åå°åä¸çå¼ï¼ä½å ·ä½æ¯è¾çæ¯å åå°åçå¼ï¼è¿æ¯å åå°åä¸çå¼ï¼å°±èªå·±å»çå ·ä½ç±»çeaqualsæ¹æ³äºã** ## 9. Integer å int ä¹é´çåºå«ï¼ ## 10. String è½¬æ¢æ Integer çæ¹å¼ååçï¼ ## 11. èªå¨è£ ç®±å®ç°åçï¼ç±»å转æ¢å®ç°åçï¼ ## 12. 对 String çäºè§£ï¼ ## 13. String 为ä»ä¹è¦è®¾è®¡æä¸å¯åçï¼ ## 14. finalãfinally å finalize çåºå«ï¼ 1. final: 修饰åéï¼æ¹æ³ï¼ç±»ï¼ 修饰åéæ¶è¡¨æè¿å¯¹è±¡çå¼ä¸å¯åï¼ä½ ä¸è½ä¸ºè¿ä¸ªåéèµä¸ä¸ªæ°çå¼ï¼æè è¿æ ·è¯´ï¼å¯¹åºæ¬ç±»åèè¨ï¼ä½ ä¸è½æ¹åå ¶æ°å¼ï¼å¯¹äºå¼ç¨ï¼ä½ ä¸è½å°å ¶æåä¸ä¸ªæ°çå¼ç¨ï¼èå¼ç¨èªèº«æ¯å¯ä»¥æ¹åçï¼ã ä¿®é¥°æ¹æ³æ¶è¡¨ææä»¬å¸ææè¿ä¸ªæ¹æ³éå®ï¼ä»¥é²æ¢ä»»ä½ç»§æ¿ç±»ä¿®æ¹å®çå«ä¹ï¼è¿æ ·ä¼ç¡®ä¿å¨ç»§æ¿ä¸ï¼æä»¬ç final æ¹æ³çè¡ä¸ºä¸ä¼æ¹åï¼å¹¶ä¸ä¸ä¼è¢«è¦çãä½¿ç¨ final æ¹æ³çå¦ä¸ä¸ªèèæ¯æçé®é¢ï¼å¨ Java æ©æçæ¶åï¼éå° final æ¹æ³ï¼ç¼è¯å¨ä¼å°æ¤æ¹æ³è°ç¨è½¬ä¸ºå åµè°ç¨ï¼å¦æ¤ä¸æ¥ä»¥åå°æ¹æ³è°ç¨äº§ççå¼éã ä¿®é¥°ç±»çæ¶å表æä½ 䏿ç®ç»§æ¿è¯¥ç±»ï¼èä¸ä¹ä¸å 许å«äººè¿æ ·åã 2. finally: æ¯å¼å¸¸å¤çä¸è¿è¡æ¶åºå¤çç代ç åï¼æ¯å¦å ³éä¸ä¸ªæ°æ®åºè¿æ¥ï¼æ¸ çä¸äºèµæºå ç¨çé®é¢ãä¸ç®¡ææ²¡æå¼å¸¸è¢«æè·ï¼finally åå¥ä¸ç代ç é½ä¼è¢«æ§è¡ã 3. finalize: finalize åºç°çåå å¨äºï¼æä»¬ä¸å®éè¦è¿è¡æ¸ çå¨ä½ãJava 没æç¨äºéæ¾å¯¹è±¡çï¼å¦å C++ éç delete è°ç¨ï¼çæ¹æ³ï¼èæ¯ä½¿ç¨åå¾åæ¶å¨ï¼GCï¼å¸®å©æä»¬éæ¾ç©ºé´ãå½åå¾åæ¶å¨åå¤éæ¾å¯¹è±¡å ç¨çåå¨ç©ºé´çæ¶åï¼å°é¦å è°ç¨å ¶ finalize() æ¹æ³ã ## 15. static å ³é®åæä»ä¹ä½ç¨ï¼ static æ¯ Java éçé访é®ä¿®é¥°ç¬¦ï¼å®å¯ä»¥ç¨æ¥åå»ºç±»æ¹æ³åç±»åéã å½ä¿®é¥°ä¸ä¸ªåéçæ¶åï¼æ¤åéå°±æäºç¬ç«äºå¯¹è±¡çéæåéï¼æ 论ä¸ä¸ªç±»å®ä¾åäºå¤å°ä¸ªå¯¹è±¡ï¼è¿ä¸ªç±»åªæä¸ä»½è¿ä¸ªéæåéçæ·è´ï¼æä»¥ static 修饰çåéï¼å³éæåéï¼ä¹è¢«å«åç±»åéãä¸ä¸ªå±é¨åéä¸è½è¢«å£°æä¸º static åéã å½ä¿®é¥°ä¸ä¸ªæ¹æ³çæ¶åï¼æ¤æ¹æ³å°±æäºç¬ç«äºå¯¹è±¡çéææ¹æ³ï¼éææ¹æ³ä¸è½ä½¿ç¨ç±»çééæåéï¼å ä¸ºéææ¹æ³åéæåéå äºééæçå ¶ä»æååå§åï¼éææ¹æ³å åºæ¥ï¼ç¶åææ¯ééæçï¼æä»¥æç½è¿ä¸ªé¡ºåºå¾éè¦ãéææ¹æ³ä»åæ°å表å¾å°æ°æ®ï¼ç¶å计ç®è¿äºæ°æ®ã ## 16. å举 Java çéå以åéåä¹é´çç»§æ¿å ³ç³»? ## 17. ListãSetãMap çåºå«ï¼ ## 18. ArrayListãLinkedList çåºå«ï¼ - ArrayList å®ç°äºå¯å大å°çæ°ç»ãå®å 许 nullãArrayList 没æåæ¥ãå¢å æ ¢ï¼æ¥è¯¢å¿«ã - LinkedList å®ç°äº List æ¥å£ï¼å 许 null å ç´ ãæ¤å¤ LinkedList æä¾é¢å¤ç getï¼removeï¼insert æ¹æ³å¨ LinkedList çé¦é¨æå°¾é¨ãLinkedList 䏿¯åæ¥çï¼ä¸æ¯çº¿ç¨å®å ¨ï¼ãLinkedList å¢å å¿«ï¼æ¥è¯¢æ ¢ã å®ç°çº¿ç¨å®å ¨æ¹å¼å¦ä¸ï¼ ```Java List list = Collections.synchronizedList(new LinkedList(...)); ``` ## 19. HashMapï¼HashTableï¼ConcurrentHashMap å®ç°åç以ååºå«ï¼ ## 20. HashSet ä¸ HashMap æä¹å¤æéåå ç´ éå¤ï¼ ## 21. StringãStringBufferãStringBuilder ä¹é´çåºå«ï¼ ## 22. ä»ä¹æ¯åºååï¼æä¹å®ç°ï¼æåªäºæ¹å¼ï¼ åºå忝ä¸ç§å°å¯¹è±¡è½¬æ¢ä¸ºåèæµçè¿ç¨ï¼ç®çæ¯ä¸ºäºå°è¯¥å¯¹è±¡åå¨å°å åä¸ï¼çåé¢å次æå»ºè¯¥å¯¹è±¡æ¶å¯ä»¥è·åå°è¯¥å¯¹è±¡å åçç¶æåæ°æ®ä¿¡æ¯ã Java ä¸ï¼åªæä¸ç§æ¹å¼å¯ä»¥å®ç°åºååï¼åªéè¦å®ç° Serializable æ¥å£ã å¨ Android ä¸ï¼è¿æå¦å¤ä¸ç§å®ç°åºååçæ¹å¼,å®ç° Parcelableï¼è¿ä¸ªæ¯ Android ç¬æçä¸ç§åºååæ¹æ¹å¼,ç¸æ¯è¾ Serializableï¼Parcelable éè¦æä¾å¤§éçæ¨¡æ¿ä»£ç ï¼è¾ä¸ºç¹çï¼ä½æ¯æçæ¯ Serializable é«åºä¸å°ï¼å 为 Serializable å®ç°çåºååå©ç¨åå°ï¼å¯è½ä¼è¿è¡é¢ç¹çIOæä½ï¼æä»¥æ¶èæ¯è¾å¤§ãè Parcelable 忝å¨å åä¸è¿è¡åºååã æä»¥è¿éæ¨èçæ¯ï¼ - å ååºååä¼å éæ© Parcelableã - åå¨å°è®¾å¤ä¼å éæ© Serializable(è¿éæ¨èä½¿ç¨ json æ¹å¼å å¯ä¿å卿¬å°ï¼æ¯è¾ç®å) ## 23. 对åå°çäºè§£ï¼ ## 24. 对注解çäºè§£ï¼ ## 25. 对ä¾èµæ³¨å ¥çäºè§£ï¼ ## 26. 对æ³åçäºè§£ï¼ ## 27. æ³åä¸ extends å super çåºå«ï¼ ## 28. 对 Java çå¼å¸¸ä½ç³»çäºè§£ï¼ ## 29. 对解æä¸åæ´¾çäºè§£ï¼ ## 30. éæä»£çå卿代ççåºå«ï¼æä»ä¹åºæ¯ä½¿ç¨ï¼ ## 31. è°è°å¯¹ Java ç¶ææºçè§£ï¼ # 线ç¨ä¸å¹¶å 1. 线ç¨åè¿ç¨çåºå«ï¼ 2. å¼å¯çº¿ç¨çä¸ç§æ¹å¼ 3. å¦ä½æ£ç¡®çç»æä¸ä¸ªThread? 4. Thread ä¸ Runnable çåºå«ï¼ 5. run() ä¸ start() æ¹æ³çåºå«ï¼ 6. sleep() ä¸ wait() æ¹æ³çåºå«ï¼ 7. wait ä¸ notify å ³é®åçåºå«ï¼ 8. synchronized å ³é®åçç¨æ³ãä½ç¨åå®ç°åçï¼ 9. volatile å ³é®åçç¨æ³ãä½ç¨åå®ç°åçï¼ 10. transient å ³é®åçç¨æ³ãä½ç¨åå®ç°åçï¼ 11. ReentrantLockãsynchronizedãvolatile ä¹é´çåºå«ï¼ 12. ä»ä¹æ¯çº¿ç¨æ± ï¼å¦ä½ä½¿ç¨? 13. å¤çº¿ç¨æç¹ç»ä¼ çå®ç°åçï¼ 14. ä»ä¹æ¯æ·±æ·è´åæµ æ·è´ï¼ 15. Java ä¸å¯¹è±¡ççå½å¨æï¼ 16. 对并åç¼ç¨çäºè§£ï¼ # JVM ## 1. ç®è¿° JVM å 忍¡ååå ååºåï¼ **å 忍¡åï¼** Java å 忍¡åè§å®äºææçåé齿¯åå¨å¨ä¸»å åä¸ãæ¯æ¡çº¿ç¨è¿æèªå·±çå·¥ä½å åï¼çº¿ç¨çå·¥ä½å åä¸ä¿åäºè¯¥çº¿ç¨ä½¿ç¨å°çåéç主å å坿¬æ·è´ï¼çº¿ç¨å¯¹åéçæææä½é½å¿ é¡»å¨å·¥ä½å åä¸è¿è¡ï¼èä¸è½ç´æ¥è¯»å主å åä¸çåéãä¸åç线ç¨ä¹é´ä¹æ æ³ç´æ¥è®¿é®å¯¹æ¹å·¥ä½å åä¸çåéï¼çº¿ç¨é´åéå¼çä¼ éåéè¦éè¿ä¸»å 忥宿ã  **å ååºåï¼**  å ååºåå¯ä»¥å为以ä¸å åï¼ - ç¨åºè®¡æ°å¨ ç¨åºè®¡æ°å¨æ¯ä¸åè¾å°çå å空é´ï¼å®å¯ä»¥ç使¯å½åçº¿ç¨ææ§è¡çåèç çè¡å·æç¤ºå¨ãå¦æçº¿ç¨æ£å¨æ§è¡çæ¯ä¸ä¸ª Java æ¹æ³ï¼è¿ä¸ªè®¡æ°å¨è®°å½çæ¯æ£å¨æ§è¡çèææºåèç æä»¤çå°åï¼å¦ææ£å¨æ§è¡çæ¯ Native æ¹æ³ï¼è¿ä¸ªè®¡æ°å¨å¼ä¸ºç©ºãæ¤å ååºåæ¯å¯ä¸ä¸ä¸ªæ²¡æè§å®ä»»ä½ OOM çåºåã - èææºæ èææºæ æè¿°çæ¯ Java æ¹æ³æ§è¡çå 忍¡åï¼æ¯ä¸ªæ¹æ³å¨æ§è¡çåæ¶é½ä¼å建ä¸ä¸ªæ æ¡¢ç¨äºåå¨å±é¨åé表ãæä½æ°æ ã卿龿¥å°åãæ¹æ³åºå£çä¿¡æ¯ãæ¯ä¸ä¸ªæ¹æ³ä»è°ç¨ç´è³æ§è¡å®æçè¿ç¨ï¼å°±å¯¹åºçä¸ä¸ªæ æ¡¢å¨èææºä¸å ¥æ å°åºæ çè¿ç¨ã - æ¬å°æ¹æ³æ æ¬å°æ¹æ³æ åèææºæ æåæ¥çä½ç¨æ¯é常ç¸ä¼¼çï¼å®ä»¬ä¹é´çåºå«ä¸è¿æ¯èææºæ ä¸ºèææºæ§è¡ Java æ¹æ³æå¡ï¼èæ¬å°æ¹æ³æ åä¸ºèææºæ§è¡ Native æ¹æ³æå¡ã - å Java å æ¯èææºç®¡ççå å䏿大çä¸åï¼æ¤å åçå¯ä¸ç®çå°±æ¯åæ¾å¯¹è±¡å®ä¾ï¼å 乿æç对象å®ä¾é½å¨è¿éåé å åã - æ¹æ³åº ç¨äºåå¨å·²ç»è¢«èææºå è½½ç类信æ¯ã常éãéæåéã峿¶ç¼è¯å¨ç¼è¯åç代ç çæ°æ®ãç¸å¯¹èè¨ï¼åå¾åæ¶å¨è¿ä¸ªåºåæ¯æ¯è¾å°åºç°çã **æ´å¤è¯·åèï¼** [Java å 忍¡å](https://www.jianshu.com/p/13b56ddad197) [Java å ååºå](https://www.jianshu.com/p/2f0742032ab3) ## 2. ç®è¿°åå¾åæ¶å¨çå·¥ä½åçï¼ ## 3. å¦ä½å¤æå¯¹è±¡ççæ»ï¼åå¾åæ¶ç®æ³ï¼æ°ç代ï¼èçä»£ï¼ ## 4. åªäºæ åµä¸ç对象ä¼è¢«åå¾åæ¶æºå¶å¤çæï¼ ## 5. åå¾åæ¶æºå¶ä¸è°ç¨ System.gc() çåºå«ï¼ ## 6. 强å¼ç¨ã软å¼ç¨ãå¼±å¼ç¨ãèå¼ç¨ä¹é´çåºå«ï¼ 强å¼ç¨ï¼ä¸ä¼è¢« GC è½»ææ¸ çï¼åªè¦å¼ç¨åå¨ï¼åå¾åæ¶å¨æ°¸è¿ä¸ä¼åæ¶ã ```Java Object obj = new Object(); ``` 软å¼ç¨ï¼ éå¿ é¡»å¼ç¨ï¼å åæº¢åºä¹åè¿è¡åæ¶ ```Java Object obj = new Object(); SoftReference