当前位置: 首页 > 面试题库 >

JACOB无法正确释放对象

司寇望
2023-03-14
问题内容

我有一个eclipse插件,它使用Jacob连接到COM组件。但是,在我完全关闭插件后,.exe文件仍然挂在Windows进程中。

ComThread.InitMTA(true)用于初始化,并确保SafeRelease()在关闭应用程序之前为我创建的每个COM对象都调用了该对象,并在最后调用ComThread.Release()了该对象。

我是否遗漏了什么?


问题答案:

TD2JIRA转换器也有同样的问题。最终必须修补Jacob文件之一才能释放对象。之后,一切顺利。

我的客户端logout()方法中的代码现在如下所示:

try {
  Class rot = ROT.class;
  Method clear = rot.getDeclaredMethod("clearObjects", new Class[]{});
  clear.setAccessible(true);
  clear.invoke(null, new Object[]{});
} catch( Exception ex ) {
  ex.printStackTrace();
}

最初无法访问ROT类,AFAIR。

更新资料

在Jacob中释放资源的正确方法是调用

ComThread.InitSTA(); // or ComThread.InitMTA()
...
ComThread.Release();

不好的是,有时它没有帮助。尽管Jacob调用了本机方法release(),但是内存(甚至不是Java内存,而是JVM进程内存)都无法控制地增长。



 类似资料:
  • 我通过在方法之外添加一个简单的Ride实例来测试它,它工作得很好。 我还尝试将监听器更改为,结果相同。 Edit2:当我试图从数据库中检索整数时,我会得到一条错误消息。

  • 因此,我们目前正在将基于MQTT的消息后端中的Netty3.x升级到Netty4.1。在我们的应用程序中,我们使用自定义MQTT消息解码器和编码器。 对于我们的解码器,我目前使用的是一个ByteToMessageDecoder,如下所示: 其中是我们的自定义对象,它被传递到下一个的。正如您所看到的,当我从传入的对象中的传入的对象。那么,既然在netty中是引用计数的,那么我需要在这里通过调用来释放

  • 所以我正在为我的MPEG-DASH视频生成一个非常简单的MPD清单文件,但我无法找出问题所在。这是我当前的清单文件 这个MPD文件使用我能找到的每个验证器进行验证。出于安全原因,这些段的URL被隐藏,但它们都是开放的、公开的,并且可以单独查看。但当我试图运行清单文件时,这取决于我得到的玩家。“在清单中找不到支持的源”,或者干脆什么都没发生。 你知道这怎么可能是错的吗?我目前正在使用媒体url作为绝

  • GSON不是在一开始就解析我传递的整个JSON字符串吗?因此,最终,我希望新的数据源是对象。那可行吗?

  • 这是我的代码Rest我的api上传文件 我的API有一个验证,当这个请求made.For上面的请求时,它会检查文件扩展名. xml我的api没有收到. xml文件扩展名,所以它会给出400个错误 仅供参考:使用Postman时,同样的请求也能正常工作

  • JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32程序库。 示例代码: import com.ms.com.*;import com.ms.activeX.*;public class DispatchTest{ public static void main(String[] args) { ActiveXComponent xl =