在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java 里面的動態(tài)反射是啥意思

java 里面的動態(tài)反射是啥意思

持久代被占滿
異常:java.lang.OutOfMemoryError: PermGen space
說明:

Perm空間被占滿。無法為新的class分配存儲空間而引發(fā)的異常。這個(gè)異常以前是沒有的,但是在Java反射大量使用的今天這個(gè)異常比較常見了。主要原因就是大量動態(tài)反射生成的類不斷被加載,最終導(dǎo)致Perm區(qū)被占滿。
更可怕的是,不同的classLoader即便使用了相同的類,但是都會對其進(jìn)行加載,相當(dāng)于同一個(gè)東西,如果有N個(gè)classLoader那么他將會被加載N次。因此,某些情況下,這個(gè)問題基本視為無解。當(dāng)然,存在大量classLoader和大量反射類的情況其實(shí)也不多。
回答
編輯回答
萌小萌

java專門在內(nèi)存中劃出一塊存類的泛型信息,
由于認(rèn)為泛型都是在編譯期已經(jīng)確定.
所以這個(gè)區(qū)域沒有多大,也沒有提供回收功能.
現(xiàn)在spring等框架總在運(yùn)行時(shí)動態(tài)創(chuàng)建泛型,導(dǎo)致這塊區(qū)域被占滿,還無法回收內(nèi)存,最后報(bào)錯.

2017年6月8日 17:28
編輯回答
半心人

改用Java 1.8吧,1.8用MetaSpace取代了PermGen,動態(tài)擴(kuò)展性會好很多。

2017年9月27日 14:55