自定义ClassLoader是否会导致内存泄漏?

苹果电脑

ClassLoaders存储在永久代内存中。而且,正如Java HotSpot™虚拟机中Java内存管理的白皮书中所指定的那样,永久生成的内存肯定会被垃圾收集。那么,自定义是否Classloader还会导致内存泄漏?如果是,那它怎么会发生呢?

更新

在@Marko Topolnik和@Prunge的帮助下,我的疑惑明确了。关于类装入器和内存泄漏,提出了以下几点:

  1. CustomClassLoader不会存储在Perm生成中。
  2. ClassLoader如果ClassLoder超出范围,自定义可能会导致内存泄漏,但是无论是否将ClassLoader对象设置为,应用程序仍会引用它已加载的类null
  3. 如果我们不需要给定的ClassLoader对象,则应确保从加载的类开发的对象的所有引用均应为null
  4. 如果by加载的任何类ClassLoader都不符合资格,GC则ClassLoader将不适用GCed
马克·托波尼克(Marko Topolnik)

类加载器未存储在PermGen空间中。类数据存储在此处,它仅与进行加载的类加载器间接相关:类加载器保存对其已加载的每个类的引用。

除了一件事,这个答案提供了很好的信息:在PermGen空间中分配类加载器是错误的。类加载器只是普通的Java类,PermGen仅包含特殊材料,而不是常规对象数据。例如,它包含所有静态类变量和方法的可执行代码。

这里可以找到有关HotSpot内存布局和垃圾回收细节的大量资源

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android内存泄漏自定义视图

如何避免由于自定义静态处理程序类而导致的内存泄漏?

如何使用自定义OperationId而不导致内存泄漏并被Application Insights忽略?

不带挂断调用的ManuallyDrop是否会导致内存泄漏?

引用数组索引是否会导致内存泄漏?

BeginInvokeOnMainThread方法是否会循环并导致内存泄漏?

Android匿名asyncTask-是否会导致内存泄漏

这段代码是否会导致 JavaScript 内存泄漏

这个Java示例是否会导致内存泄漏?

Task.Delay()循环是否会导致内存泄漏?

调用创建对象的函数是否会导致内存泄漏?

分配函数作用域成员是否会导致内存泄漏?

这种对共享指针向量的推回是否会导致内存泄漏?

调用解构函数时,这是否会导致内存泄漏?

在循环中添加自定义视图会导致内存不足错误

Swift解码数组自定义类内存泄漏

如何解决自定义视图中的内存泄漏?

使用UILabel时自定义UICollectionViewCell和内存泄漏

在Chrome自定义标签中检测到内存泄漏

用自定义表关闭winform后内存泄漏

自定义键盘崩溃共享库事件(内存泄漏?)

自定义链接列表C ++中的内存泄漏

在Cloud Firestore中使用自定义对象是否会导致性能问题?

清空Array = []会导致内存泄漏吗?

Redux存储会导致内存泄漏吗?

该程序会导致内存泄漏吗?

goto LABEL会导致内存泄漏吗?

递归调用Ajax会导致内存泄漏?

NavigableMap的subMap会导致内存泄漏吗?