apache felix org.apache.felix.log.LogListenerThread内存不足问题

问题描述

由于org.apache.Felix.log.LogEntryImpl对象在其m_entriesToDeliver arrayList中积累,我目前在org.apache.Felix.log.LogListenerThread类中遇到内存不足的问题。

我查看了该类的源代码,而我能看到的唯一原因是:

1。线程停止了,

2。while循环条件(while(!isInterrupted()))触发了循环中断,

  1. listener.logged(entry);出于某种原因,将条目传递给侦听器会阻塞线程,

4.scheduler正在使线程处于饥饿状态,而没有给它足够的时间来运行和清除阵列。

** 3。我对所有侦听器都遵循了listener.logged(entry)调用,但没有看到此调用将被阻止的任何锁或原因,因此我消除了这种可能性。

这不是问题,直到我们从Felix框架4.2.1升级到6.0.3

我们已经尝试了以下解决问题的方法

  1. 更改了LogService弃用的log()调用,我们必须检索org.osgi.service.log.Logger实例,并改用.warn()、. error()等方法调用
  2. 更改了属性:org.apache.Felix.log.maxSize = 0

加上heapdump的图像,我无法附加转储本身,因为其中包含私有公司数据,因此无法在公共论坛上共享。

heapdump

有人知道这是什么原因吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)