我有一个使用Spring-Boot的Web应用程序。现在需要此应用程序使用自定义dll(内部构建dll文件)。这个dll没有任何问题,因为我们在其他应用程序中使用它,并且没有任何问题。
要在我正在编写的这个新Web应用程序中加载库,我已将dll文件添加到procrun目录中。此目录位于库路径上,因此这是有意义的。
在启动期间,我输入代码以立即加载dll,并测试其部分功能。这很好。
但是,我有一个计时器,它安排一些函数的执行,这可能包括也可能不包括对dll的函数调用。
在某些时候,大约10分钟左右执行,服务意外,似乎没有任何正当理由,停止。
虽然我在代码中的相应逻辑位置尝试/捕获异常,但是没有打印相关的日志条目。
另一个面包屑是事件日志将打印有关dll_unload的内容。 (见图)
我需要一些帮助来弄清楚服务失败/停止的原因。 亲切的问候。
编辑:经过大约三天的调试和摸不着头脑,我找到了一个论坛帖子,解释说这个问题与系统在垃圾收集过程中释放内存的方式有关。似乎所讨论的dll正被垃圾收集器卸载,即使它仍然可以在稍后的某个时间被调用 - 这当然是服务崩溃的原因。为了解决这个问题,我放入了一个定时器,它会以三分钟的间隔调用dll中的方法(在我的系统上,这不会影响性能)。我知道这个解决方案是一个黑客,但它适用于我。