java – getMethod是缓存并导致内存泄漏
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – getMethod是缓存并导致内存泄漏,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含869字,纯文字阅读大概需要2分钟。
内容图文
我正在使用自动生成的Java类来执行特殊方法.因此,我必须通过反射调用方法.
此执行由Swing Thread触发,因为该方法(从“unknown”类调用)正在更新UI元素.每次执行新线程都会通过调用在类中搜索一个Method
Class {
...
public Method[] getMethods() throws SecurityException
...
}
getMethods的逻辑缓存了元素,但我不知道为什么.一个Profiler告诉我,Method obejcts正在浮动内存.
我可以通过设置系统属性“sun.reflect.noCaches”来禁用Java的方法缓存,但是在我更改了这些属性后,我的应用程序变得非常缓慢.
题:
在尝试从类中获取方法之前,我可以实现自己的缓存算法.但我工作的项目非常大,我们有多个反射调用.
什么可以解决这些问题?
哪些情况会触发这些内存泄漏(错误的类加载器,……)?
该项目使用Java 1.5在Linux下运行
解决方法:
>首先,它使用的缓存是SoftReference,因此缓存的方法将在OOME发生之前被删除.
>如果您仍想删除它,只需在每次调用getMethods(..)之后调用clearCachesOnClassRedefinition()方法;你必须使用反射,因为方法是私有的.
内容总结
以上是互联网集市为您收集整理的java – getMethod是缓存并导致内存泄漏全部内容,希望文章能够帮你解决java – getMethod是缓存并导致内存泄漏所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。