java 里面的动态反射是啥意思

持久代被占满
异常:java.lang.OutOfMemoryError: PermGen space
说明:

Perm空间被占满。无法为新的class分配存储空间而引发的异常。这个异常以前是没有的,但是在Java反射大量使用的今天这个异常比较常见了。主要原因就是大量动态反射生成的类不断被加载,最终导致Perm区被占满。
更可怕的是,不同的classLoader即便使用了相同的类,但是都会对其进行加载,相当于同一个东西,如果有N个classLoader那么他将会被加载N次。因此,某些情况下,这个问题基本视为无解。当然,存在大量classLoader和大量反射类的情况其实也不多。
阅读 2.6k
2 个回答

改用Java 1.8吧,1.8用MetaSpace取代了PermGen,动态扩展性会好很多。

java专门在内存中划出一块存类的泛型信息,
由于认为泛型都是在编译期已经确定.
所以这个区域没有多大,也没有提供回收功能.
现在spring等框架总在运行时动态创建泛型,导致这块区域被占满,还无法回收内存,最后报错.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题