如何查找Java + JNI + C++进程中的内存泄漏

2023-11-24

我有一个用 java 编写的项目,使用 JNI 使用 C++ 库。 所有的代码都是我们写的,所以我有所有的源代码。

几个小时后,机器内存不足,尽管我的进程只是迭代文件,并且删除了与前一个文件相关的所有内存。

我确信存在内存泄漏,通常我使用Valgrind,但似乎他不能很好地应对Java,并且认为JVM正在泄漏,即使对于“hello world”java项目也是如此。

我已经通过单元测试测试了 C++ 部分(主要流程),并在单元测试中使用了 valgrind,但没有发现任何泄漏。这并不能证明任何事情,因为我可能会错过很多潜在的流程。

我的主要问题是,如何找到泄漏?

了解谁在消耗内存,是 Java 还是本机部分,这将非常有帮助?他们处于同一过程中。

Thanks.


根据我的经验,Valgrind 实际上可以与 JVM 一起使用,并且它仍然是寻找 C/C++ 代码中泄漏的最佳工具,即使使用 JNI 也是如此。所以你的问题有点包含你需要的答案;)

如果您无法同时使用JNI和Valgrind,请参考Valgrind 和 Java.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查找Java + JNI + C++进程中的内存泄漏 的相关文章

随机推荐

  • 无法打开输出文件 debug\serbest.exe:权限被拒绝

    我用 C 编译 Qt 程序 收到以下错误消息 无法打开输出文件 debug serbest exe 权限被拒绝Collect2 ld 返回 1 退出状态 这些命令的含义是什么 我该如何消除这些错误 最可能的原因 serbest exe 仍在
  • JDBC4中驱动程序类是如何定位的

    JDBC 第 4 版中的重要补充之一您不必显式加载 司机通过电话Class forName不再了 当您的应用程序第一次尝试连接数据库时 DriverManager自动加载找到的驱动程序 应用程序CLASSPATH 我的问题是如何 如果类路径
  • 如何为 IE8 填充 Array.prototype.includes()

    我正在尝试填充数组方法includes 以与IE8一起使用 我需要支持一个项目并且我不想使用indexOf 我知道有一个polyfill 所以我去了 https developer mozilla org en US docs Web Ja
  • AttributeError:类型对象“numpy.ndarray”没有属性“__array_function__”

    我将 numpy 升级到最新版本 现在导入 numpy 时出现以下错误 AttributeError 类型对象 numpy ndarray 没有属性 数组函数 我正在使用 numpy 版本 1 16 使用以下命令卸载 Numpy 的所有安装
  • Gnu-Screen:运行脚本,将命令发送到正在运行的屏幕会话

    是否可以编写一个脚本来更改名称并打开对当前选项卡的监视 假设它正在屏幕中运行 Thanks 从屏幕手册页 X Send the specified command to a running screen session You can us
  • 所有对最大流量

    给定一个有向加权图 如何找到最大流量 or 最小切边 在所有顶点对之间 天真的方法就是简单地调用Max Flow像 Dinic 的算法 其复杂度为O V 2 E 对于每对 因此对于所有对来说都是O V 4 E 是否可以将复杂度降低到O V
  • 如何从 .env 文件设置环境变量

    假设我有 env 文件包含如下行 USERNAME ABC PASSWORD PASS 与正常人不同的是export前缀 所以我无法直接获取文件 创建从 env 文件加载内容并将其设置为环境变量的 shell 脚本的最简单方法是什么 如果您
  • R (purrr) 展平命名列表以列出并保留名称

    也许我遗漏了一些明显的东西 但试图将 R 中的命名列表的命名列表 甚至可能更加嵌套 扁平化为最终一个平面列表 purrr and rlist似乎有这方面的工具 我怎样才能实现子列表的名称成为扁平化结果列表的名称预加密 例如list1 bli
  • 在主对话框中嵌入对话框并通过 MFC 中的按钮单击进行切换

    我有一个如下的设计 所以基本上 我想在应用程序主对话框中嵌入三个对话框并在它们之间切换 对于每个按钮单击 即按钮 1 将显示对话框 1 按钮 2 将隐藏对话框 1 并显示对话框 2 等等 每个对话框都有不同的设计和功能 我尝试使用 CPro
  • 为什么 std::regex_iterator 会导致此数据堆栈溢出?

    我一直在使用std regex iterator解析日志文件 我的程序已经工作了好几个星期 并且已经解析了数百万条日志行 直到今天 当今天我对日志文件运行它并得到堆栈溢出时 事实证明 只有日志文件中的一个日志行导致了问题 有谁知道为什么我的
  • 自从最近引入登录审核以来,我如何测试 Facebook 应用程序?

    我正在开发一个 Facebook 应用程序 它通过 API 调用来获取用户事件列表 该应用程序将使用 Javascript 来调用用户 事件边缘 如下所示 FB api user id events function response if
  • Powershell 中加号 (+) 的特殊使用

    除了其自然用法 即两个参数相加 之外 您还可以使用加号 登录 Powershell 进行特殊调用 如下所示 System Net WebRequestMethods Ftp UploadFile UploadFile是一个公共静态字段 根据
  • C#:以编程方式在工作表范围内创建“命名范围”

    我们如何创建一个 命名范围 其范围设置为工作表 因为我们可以从 Excel 手动执行此操作 所以我想有一种方法可以在代码中执行此操作 使用 设置名称Range Name 属性创建一个工作簿范围的命名范围 我尝试在范围名称前添加 前缀按照建议
  • 在 pandas MultiIndex DataFrame 中选择行

    选择 过滤行的最常见的 pandas 方法是什么索引为 MultiIndex 的数据帧 基于单个值 标签的切片 基于来自一个或多个级别的多个标签进行切片 过滤布尔条件和表达式 哪些方法适用于哪些情况 为简单起见假设 输入数据帧没有重复的索引
  • 在 Microsoft Edge 中使用 @font-face

    我在这里处理一个奇怪的问题 当我使用 font face 时 Microsoft Edge 浏览器似乎不加载字体 我检查了所有运行 Windows 10 和 Microsoft Edge 的计算机 我检查了http caniuse com
  • 核心数据 - 在 Group By 中使用瞬态属性

    我正在创建一个带有一些聚合数据的 UITableView 在此过程中 需要使用节标题对表视图单元格进行排序和分组 问题是我想在 NSFetchRequest 中使用瞬态属性来生成节标题和结果排序 问题是 在设置 NSFetchRequest
  • phoneGap Cordova 中的命令行失败,退出代码为 8

    我正在尝试从phonegap 和cordova 开始 我按照以下步骤http phonegap com install 但在命令下 phonegap run android在命令提示符下我收到以下错误 Command line failed
  • Fancy Box - 关闭 iframe 弹出窗口时如何刷新父页面?

    我希望当我关闭 Fancy Box 弹出框架时刷新我的父页面 我在弹出窗口中有一个登录页面 因此我需要刷新父页面以在 Fancy Box 关闭时显示新的登录状态 我可以让它在没有 iFrame 代码的情况下工作 但我无法让它与 iFra
  • 获取列名的 LINQ 成员表达式

    Hello 我正在将 LINQ 和 EF 与 C 4 0 一起使用 我已将基本的 ELMAH 表拖入 EF 多次构建和保存 一切都如人们所期望的那样进行 但尝试过于雄心勃勃 需要一点帮助 我试图从作为变量传入的表达式中获取列名称 我想要的是
  • 如何查找Java + JNI + C++进程中的内存泄漏

    我有一个用 java 编写的项目 使用 JNI 使用 C 库 所有的代码都是我们写的 所以我有所有的源代码 几个小时后 机器内存不足 尽管我的进程只是迭代文件 并且删除了与前一个文件相关的所有内存 我确信存在内存泄漏 通常我使用Valgri