加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 垃圾收集器是否会删除静态最终对象?

发布时间:2020-12-15 03:02:45 所属栏目:Java 来源:网络整理
导读:我以前在 Java中的服务中使用了自定义对象,它总是在后端运行,我有时会收到带有跟踪的Bug报告,这些跟踪显示NULL_POINTER_EXCEPTION,因为垃圾收集器已经破坏了对象.由于我拥有所有高端设备,我无法测试这是否会导致静态最终对象被垃圾收集器破坏? 解决方法 Doe
我以前在 Java中的服务中使用了自定义对象,它总是在后端运行,我有时会收到带有跟踪的Bug报告,这些跟踪显示NULL_POINTER_EXCEPTION,因为垃圾收集器已经破坏了对象.由于我拥有所有高端设备,我无法测试这是否会导致静态最终对象被垃圾收集器破坏?

解决方法

Does a static final Object ever get deleted by Garbage Collector?

我可以想到三种可能发生这种情况的情况:

>使用静态加载类的类加载器变得无法访问.但这只能在你的代码达到一个没有任何东西可能注意到该对象是GC的点之后发生!
>有些东西使用了“讨厌的反射技巧”来为静态最终赋予null. (是的,可以做到……)
>有些东西巧妙地破坏了堆;例如一些有害的JNI / JNA代码.

请注意,由于您(显然)正在观察GC’d对象的效果,因此它不能是类加载器为GC的直接结果.必须要做的其他事情才能使类加载器和最终静态成为GC’…如果这就是实际发生的事情.

实际上,我怀疑你的问题与GC无关.相反,我怀疑由于未记录的未经检查的异常,您的服务正在死亡.除“main”之外的线程上未捕获的异常的默认行为是静默忽略它们.

我建议您检查您的服务线程是否正在记录所有异常,可以使用run()方法中的catch,也可以使用“未捕获的异常处理程序”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读