gpt4 book ai didi

java - openCL并崩溃,有没有更好的方法来查找内存泄漏? (JOCL)

转载 作者:行者123 更新时间:2023-12-01 05:50:22 25 4
gpt4 key购买 nike

我已经审核 openCL 的调用代码一段时间了,但没有发现任何内存泄漏。请注意,我正在使用 JOCL,因此我有一堆 JUnit 测试。如果我单独运行任何测试,或者如果我运行任何测试的 4/5,它总是会通过,但如果我在三个显卡较弱的机器之一上运行所有测试,它总是会失败。我认为这一定是内存泄漏问题。 openCL 是否存在漏洞?除了在调试器中跟踪我的代码之外,是否有更好的方法来查找内存泄漏?

我在较弱的盒子上收到此错误。如果我增加 JUnit 测试的内存使用量,我也可以在更坚固的机器上获得它,如果我将其设置得足够高,这是预期的。当这种情况发生在我较弱的机器上时,如果所有其他测试都在它之前运行,那么它会在 GPU 内存测试中随机失败。 <1MB。我正在使用 Nvidia 的 260.19.36 驱动程序。

[junit] CL_MEM_OBJECT_ALLOCATION_FAILURE
[junit] org.jocl.CLException: CL_MEM_OBJECT_ALLOCATION_FAILURE

最佳答案

当遇到内存泄漏时(无论您的项目中使用什么框架),最好检查一些事情。

  • 您是否遇到 OutOfMemoryException?如果是的话,也许您没有设置 -Xmin JMV 变量来告诉 JVM 启动多少内存。如果一开始就太少并且堆增长太快,实际上可能会导致 JVM 崩溃。所以你可以尝试一下。
  • 你知道你消耗了多少内存吗?您可以让应用程序转储当前内存使用情况或记录 gc 运行的次数。如果你的 gc 运行得非常高,要么你需要调整 gc,要么可能有泄漏。
  • 找到一个应用程序分析器(在我们的例子中,我们是一家大型 IBM 商店,因此我们使用他们的分析器,但我确信那里有免费的)。如果您怀疑存在泄漏,这可以帮助您在常规应用程序使用期间导航堆。它将准确地显示您正在使用多少堆以及哪些对象倾向于“传递”并且没有被清理。

我知道这些都是通用的。但当我们怀疑内存泄漏时,它们是我们首先检查的 list 。

关于java - openCL并崩溃,有没有更好的方法来查找内存泄漏? (JOCL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4865158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com