【问题标题】:Could loading a DLL into java result in increased CPU usage in java.exe?将 DLL 加载到 java 中会导致 java.exe 中的 CPU 使用率增加吗?
【发布时间】:2011-10-04 21:07:15
【问题描述】:

我有一个加载 dll 的 java 小程序。该 dll 用于与第三方软件进行交互。 dll 启动第三方软件,然后用于向该软件发送数据和从该软件接收数据。加载 dll 后,我们偶尔会看到 CPU 使用率飙升。峰值与 java.exe 相关,与第三方软件无关。但是,峰值仅在加载 dll 后发生。这是一个非常简单的问题的很多解释。是否有可能,该 dll 本身可能正在消耗 CPU,并且这会在系统控制台上显示为 java.exe 消耗大量 CPU?

换句话说,在 java.exe 似乎消耗大量 CPU 的状态下,这可能是由加载的 dll 引起的吗?

谢谢,

艾略特

【问题讨论】:

  • 尝试使用 Process Explorer 来查看该 java 进程中辛勤工作的线程的堆栈跟踪。如果 dll 出现在跟踪中,很可能是违规者(当然,这不是确凿的证据)。

标签: java dll cpu


【解决方案1】:

是的,当一个 dll 被加载时,它被加载到一个进程中。 dll 使用的任何内存或 CPU 都会报告为加载它的进程的一部分。如果某个dll函数在处理接收到的数据时CPU达到峰值,则会在加载该dll的应用程序下进行报告。

如果你有process explorer,你可以打开一个进程的属性。右键单击一个进程并选择属性,然后转到属性对话框的线程选项卡。这可以显示每个线程的 CPU 使用率,每个线程由图像(exe 或 dll)及其入口点标识。

【讨论】:

  • ... 但是,您不能使用为线程列出的 exe/dll 来可靠地判断 dll 是否导致您的 CPU 使用过多。您可能会得到误报 - dll 可能会导致在为 exe 列出的线程上使用。
猜你喜欢
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
相关资源
最近更新 更多