memory-leaks 相关问题

当程序无法释放已分配但不再使用且无法恢复的内存时,会发生内存泄漏。

如何在 safari 开发工具中调试“页面”内存中的累积情况?

我正在尝试调试在嵌入 Unity 应用程序的 Web 视图中看到的大量内存泄漏。不幸的是,我无法使用 safari 开发工具。 在开发工具中,我看到我的 JS 堆保持稳定,

回答 1 投票 0

更新到最新版本的 Node.js 后检测到可能的 EventEmitter 内存泄漏

我已经升级到最新的稳定版本的节点(20.9.0),现在每当我使用 npx create-react-app 或使用 vite 制作 React 应用程序时,它总是显示“可能的 eventEmitter 内存泄漏

回答 1 投票 0

Swift - JSONDecoder 中的内存泄漏

我在 iOS 应用程序解码服务器响应时发现了一些内存泄漏。这些内存泄漏并不总是发生。我正在使用以下代码来解码响应。代码是 insi...

回答 2 投票 0

分配指针数组时遇到内存泄漏,知道为什么吗?

这是我在从事的个人项目中遇到的问题的简化重现。 我正在尝试创建一个指向堆分配的指针堆数组...

回答 1 投票 0

我如何明确提示 Valgrind 关于故意未释放的内存

我有大量的内存分配,由于复杂的同步问题和其他便利性,我只想让这个进程消失。 我不想写抑制文件。 是...

回答 1 投票 0

C 可执行文件上的 MacOS `heap`

(使用带有 ARM 的 MacOS 14。)要在 MacOS 上处理存在泄漏的已编译 C 可执行文件,我们使用: 泄漏 -atExit -- 如果没有 -atExit --,则会引发错误。 堆相当于什么?开

回答 1 投票 0

全局数组中的对象没有被释放(垃圾回收)

关于垃圾收集的问题。 我有一个 javascript 程序,其中在 Application.js let g_objArr = [] 中初始化了一个全局变量。这个 g_objArr 用于加载客户资料...

回答 1 投票 0

Powershell cmdlet Get-WinEvent 导致内存泄漏

我正在编写一个简单的 Powershell 脚本来将 Windows EventLogs 转发到外部 Syslog 服务器 - 该脚本应该作为服务持续运行。为了获得前夕的事件...

回答 1 投票 0

`堆`

(使用带有 ARM 的 MacOS 14。)要在 MacOS 上处理存在泄漏的已编译 C 可执行文件,我们使用: 泄漏 -atExit -- 如果没有 -atExit --,则会引发错误。 堆相当于什么?开

回答 1 投票 0

即使我在堆上声明内存,void 函数也能防止内存泄漏吗?

我目前正在从教科书上学习C++,显然这段代码不会导致内存泄漏,尽管当我询问ChatGPT时,它告诉我事实并非如此。代码很简单,就是

回答 1 投票 0

如何查找驱动程序中泄漏 WDFMEMORY 对象的内容?

我正在使用 Windows 内核驱动程序(用 WDF 编写),我不是该驱动程序的作者,但我可以访问源代码。随着时间的推移,该驱动程序似乎会泄漏内核内存,最终导致......

回答 1 投票 0

java ImageIO.read() 中的内存泄漏

我正在利用 ImageIO.read()。原App的main方法调用的类是这样的: 导入 java.awt.*; 导入 javax.swing.*; 导入java.io.File; 导入 java.awt.image.Buffere...

回答 2 投票 0

后端应用程序消耗了所有RAM,但未发现内存泄漏

我最近将 NestJS 后端应用程序部署到了 Render,并且我提到所有可用的 RAM 在我的服务一段时间后就消失了。 它可以正常工作相当长的一段时间,不再消耗...

回答 1 投票 0

使用指针作为函数的普通变量返回后如何删除指针

我看过类似的问题,但它们都假设返回类型也是一个指针。如果这措辞不好,我深表歉意,因为我对 C++ 有点陌生。 所以我有以下功能: //

回答 2 投票 0

为什么我不能“销毁”“自有”的CRTP向量,但仍然可以释放其地址?

摘自 Björn Fahller 在 2023 年 CPP 会议上的闪电演讲。 => youtu.be/LKKmPAQFNgE 这是关于如何在不接触 new 甚至 malloc 的情况下强制 c++ 泄漏内存。 结构 V:向量 摘自 Björn Fahller 在 2023 年 CPP 会议上的闪电演讲。=> youtu.be/LKKmPAQFNgE 这是关于如何在不接触 new 甚至 malloc 的情况下强制 C++ 泄漏内存。 struct V : vector<V> {}; auto v = V{}; v.emplace_back(); v.swap(v.front()); // v representation becomes uint64_t[3]{ 0x0, 0x0, 0x0}, // so the vector allocation gets lost because no refs are left on the scope. 所以我想知道是否可以手动销毁它。 struct V : vector<V> {}; auto v = V{}; v.emplace_back(); v.emplace_back(); v.emplace_back(); v.emplace_back(); auto front = v.front(); v.swap(v.front()); using allocator = std::allocator<V>; using atraits = std::allocator_traits<allocator>; auto a = front.get_allocator(); atraits::destroy(a, &front + 1); // Ok atraits::destroy(a, &front + 2); // Ok atraits::destroy(a, &front + 3); // Ok // atraits::destroy(a, &front); // error SIGSEGV atraits::deallocate(a, &front, 4); // still seems Ok? 当尝试销毁拥有自己地址的 V 对象时,会发生SIGSEGV。 0x1796320 : 0x1796320 (alloc_begin_ptr) // It owns itself!!! 0x1796328 : 0x1796380 (one_pass_content_end_ptr) 0x1796330 : 0x1796380 (one_pass_alloc_end_ptr) 0x1796338 : 0x0 (alloc_begin_ptr) 0x1796340 : 0x0 (one_pass_content_end_ptr) 0x1796348 : 0x0 (one_pass_alloc_end_ptr) 0x1796350 : 0x0 (alloc_begin_ptr) 0x1796358 : 0x0 (one_pass_content_end_ptr) 0x1796360 : 0x0 (one_pass_alloc_end_ptr) 0x1796368 : 0x0 (alloc_begin_ptr) 0x1796370 : 0x0 (one_pass_content_end_ptr) 0x1796378 : 0x0 (one_pass_alloc_end_ptr) 所以我尝试将其移至堆栈。看起来效果不错。 struct V : vector<V> {}; auto v = V{}; v.emplace_back(); v.emplace_back(); v.emplace_back(); v.emplace_back(); auto front = v.front(); v.swap(v.front()); auto v2 = std::move(front); 没有任何对象拥有自己。 0x7ffc44d02b20 : 0x927320 (alloc_begin_ptr) // v2 on stack 0x7ffc44d02b28 : 0x927380 (one_pass_content_end_ptr) 0x7ffc44d02b30 : 0x927380 (one_pass_alloc_end_ptr) 0x927320 : 0x0 (alloc_begin_ptr) 0x927328 : 0x0 (one_pass_content_end_ptr) 0x927330 : 0x0 (one_pass_alloc_end_ptr) 0x927338 : 0x0 (alloc_begin_ptr) 0x927340 : 0x0 (one_pass_content_end_ptr) 0x927348 : 0x0 (one_pass_alloc_end_ptr) 0x927350 : 0x0 (alloc_begin_ptr) 0x927358 : 0x0 (one_pass_content_end_ptr) 0x927360 : 0x0 (one_pass_alloc_end_ptr) 0x927368 : 0x0 (alloc_begin_ptr) 0x927370 : 0x0 (one_pass_content_end_ptr) 0x927378 : 0x0 (one_pass_alloc_end_ptr) 为什么拥有自身的 allocator_traits::destroy() 上的 vector 会触发 SIGSEGV ? // atraits::destroy(a, &front); // error SIGSEGV 0x1796320 : 0x1796320 (alloc_begin_ptr) // It owns itself!!! 0x1796328 : 0x1796380 (one_pass_content_end_ptr) 0x1796330 : 0x1796380 (one_pass_alloc_end_ptr) [直播] (我假设这一行: auto front = v.front(); 是一个拼写错误,因为 v.front() 是您从中复制的默认构造的 V 对象。这意味着该线本质上是auto front = V{}。你的意思是auto& front = v.front()) &front + 1、&front + 2和&front + 3是指向空向量的指针,这些可以被销毁。 如果您试图破坏 &front 指向的内容,则这是具有 4 个元素的向量。最后三个元素是那些空向量,被销毁是没有问题的。 但 front 的第一个元素是 front 本身。这是未定义的行为,因为您将在已经被销毁的对象上调用析构函数,但实际上它会导致无限循环,因为它只会再次调用析构函数并递归地尝试销毁相同的向量(以及堆栈溢出,从而导致段错误)。 如果您只是释放它,则不会调用析构函数,因此不会出现无限循环。如果向量保存了分配内存的其他向量,则可能会泄漏内存,因为这些向量的析构函数也不会被调用。 正如您所尝试的那样,“修复”此问题的方法是打破“所有权”循环,例如将其移动到新向量(V{} = std::move(front) / V{}.swap(front))。

回答 1 投票 0

为什么系统不能正确释放C和Rust程序的内存?但是C++程序好像没有问题

#包括 #包括 #包括 无效*线程函数(无效*参数){ char **记录 = malloc(1000000 * sizeof(char *)); 如果(记录== NULL){ ...

回答 1 投票 0

使用node-canvas生成多个图像时的内存泄漏问题

我使用画布生成大量图像,此过程在生成 5000 张图像时消耗 6GB RAM。不幸的是,处理完成后内存没有被释放。绝望...

回答 1 投票 0

具有动态 TableColumns 的 TableView 中的 JavaFX 内存泄漏

我使用的是jdk1.8.0_40 我想制作一个可以动态更改列的 TableView,但它会泄漏 Old/Tenured gen 中的内存并最终挂起 JVM。 这是一个简单的程序

回答 3 投票 0

MySql JDBC AbandonedConnectionCleanupThread 内存泄漏

我正在使用 springBoot Java 应用程序和 MySql 连接器最新版本:8.0.26('mysql-connector-java')。 更具体地说,它发生在 com.mysql.cj.jdbc.AbandonedConnectionCleanupThread 中。

回答 1 投票 0

Java(FX) 应用程序正在泄漏内存

我的 JavaFX (12) 应用程序似乎在 Windows 上泄漏内存:一晚后,该应用程序消耗了我的大部分 RAM。但是,这不会显示在任务管理器中 - 除非以某种方式...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.