如何查找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++进程中的内存泄漏 的相关文章

  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 无法打开输出文件 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