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

发布于 2022-09-06 07:52:33 字数 331 浏览 16 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

聚集的泪 2022-09-13 07:52:33

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

老街孤人 2022-09-13 07:52:33

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文