问题标签 [memory-management]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
51612 浏览

c - 在 C 中为 malloc 和 free 创建一个包装函数

我正在尝试为Cfreemalloc在 C 中创建包装函数,以帮助通知我内存泄漏。有谁知道如何声明这些函数,所以当我调用它malloc()free()它会调用我的自定义函数而不是标准库函数?

0 投票
3 回答
4966 浏览

vb6 - VB6中的动态内存分配

有这样的事吗?

我说的是类似于 C++new命令的东西,即需要显式释放内存(或有内存泄漏风险)的内存分配。

我问是因为我记得以前必须通过将表单/控件/其他对象设置为来解决一些 GDI 泄漏问题,Nothing但现在不记得是什么或为什么......

在 VB6 中开发时,我们是否需要担心内存管理?

0 投票
2 回答
2843 浏览

memory-management - 操作系统通常如何管理内核内存和页面处理?

我正在研究内核设计,我有一些关于分页的问题。

到目前为止,我的基本想法是:每个程序都有自己的(或者它认为的)4G 内存,减去我为程序可以调用的内核函数保留的部分。因此,操作系统需要找出某种方法来加载程序在运行期间需要使用的内存页面。

现在,假设我们有无限量的内存和处理器时间,我可以加载/分配程序写入或读取的任何页面,因为它使用不存在(或被换出)的页面的页面错误,因此操作系统可以快速分配或交换它们。但在现实世界中,我需要优化这个过程,这样我们就不会有一个程序不断消耗它曾经接触过的所有内存。

所以我想我的问题是,操作系统通常是如何解决这个问题的?我最初的想法是创建一个程序调用来设置/释放页面的函数,然后它可以自行管理内存,但是程序通常会这样做,还是编译器假设它有自由支配权?此外,编译器如何处理需要分配相当大的内存段的情况?我是否需要提供一个尝试按顺序给它 X 页的功能?

这显然不是一个特定于语言的问题,但我偏爱标准 C 并且擅长 C++,所以我希望任何代码示例都在那个或汇编中。(汇编应该不是必需的,我完全打算让它与尽可能多的 C 代码一起工作,并作为最后一步进行优化。)

另一件事也应该更容易回答:通常如何处理程序需要调用的内核函数?是否可以只拥有一个包含程序可以调用的大多数基本功能/进程特定内存的内存区域(我正在考虑虚拟空间的末尾)?我的想法是让内核函数做一些非常花哨的事情并在程序需要做任何重大事情时交换页面(这样程序就无法在自己的空间中看到敏感的内核函数),但我不是真的在这一点上专注于安全。

所以我想我更担心一般的设计理念而不是细节。我想让内核(以某种方式)与 GCC 完全兼容,并且我需要确保它提供了普通程序所需的一切。

感谢您的任何建议。

0 投票
12 回答
26423 浏览

c++ - 单例析构函数

不使用实例/引用计数器的单例对象是否应该被视为 C++ 中的内存泄漏?

如果没有计数器在计数为零时要求显式删除单例实例,那么如何删除对象?应用程序终止时是否由操作系统清理?如果那个 Singleton 在堆上分配了内存怎么办?

简而言之,我是否必须调用 Singelton 的析构函数,还是可以依靠它在应用程序终止时进行清理?

0 投票
4 回答
12240 浏览

c# - List Clear() 方法是否会破坏子级 [C#.NET]?

如果我创建列表的递归列表:

然后稍后调用 tempList.Clear(),它会破坏内存中的所有 childList,还是我应该创建一个递归方法先清除所有 childList?

0 投票
3 回答
3407 浏览

c# - ADO.NET + 大量 INSERTs + Excel + C# = “A bad time”吗?

基本上我需要将一堆数据插入到 Excel 文件中。创建 OleDB 连接似乎是最快的方法,但我发现遇到了内存问题。当我执行 INSERT 查询时,进程使用的内存似乎在不断增长。我已将它们缩小到仅在输出到 Excel 文件时发生(内存保持稳定而没有输出到 Excel)。我关闭并重新打开每个工作表之间的连接,但这似乎对内存使用没有影响(Dispose() 也是如此)。数据写入成功,因为我可以使用相对较小的数据集进行验证。如果有人有见识,将不胜感激。

在构造函数中调用initializeADOConn()

initADOConnInsertComm()创建插入参数化插入查询

每当写入新记录时都会调用writeRecord() 。根据需要创建新工作表。

编辑:

不,我根本不使用 Excel。我故意避免使用 Interop.Excel,因为它的性能很差(至少从我对它的涉猎来看)。

0 投票
5 回答
4829 浏览

c# - .NET CF 应用程序和内存不足异常

我正在开发一个 .NET CF 3.5 网络游戏。我的问题是应用程序首先加载所有资源。然而,在随后的启动中,该应用程序在加载资源(尤其是声音或大图像)时给了我内存异常。

请指导我

0 投票
5 回答
2723 浏览

iphone - 在 CocoaTouch (iPhone OS) 中,如何查找/消除 Instruments Leak 工具找不到的泄漏?

我有一个在模拟器中运行良好的 iPhone 应用程序。它通过摆脱并非绝对必要的所有内容来很好地响应内存警告。当我在设备上运行它时,它运行良好。但是经过一定量的使用后,它会因错误代码 101 而崩溃——据我所知,这是操作系统因内存使用而杀死它。我可以看到内存警告(我正在记录它),我的应用程序对其做出响应,但此后不久就死了。

如果我查看 Instruments 中的应用程序(在设备上或在 sim 中),它没有发现任何泄漏。此外,净内存使用量在 600-700k 字节范围内。从我的应用程序的不同视图转换会增加内存使用量(如预期的那样),但是当视图和控制器被释放并解除分配时,内存使用量永远不会像以前那么低。但是,加法通常只是 1000-2000 字节范围内的内容。因此,虽然 Leaks 显示没有泄漏,但我怀疑某处存在问题。我还查看了我正在分配的所有对象,所有这些对象似乎都按预期被回收了。我看到的唯一不断增加的对象是 GeneralBlock-N(其中 N 是某个数字)

我应该不关注仪器净使用量吗?尝试诊断问题的下一步是什么?

补充:我没有对 malloc() 或任何会返回我负责的缓冲区的 CoreFoundation 库进行任何调用。我正在进行的唯一非 Obj-C 调用是将语句记录到 NSLog。

0 投票
5 回答
77889 浏览

c++ - 如何在 C++ 中获取 Windows 下的内存使用情况

我试图从程序本身中找出我的应用程序消耗了多少内存。我要查找的内存使用情况是 Windows 任务管理器的“进程”选项卡上“内存使用情况”列中报告的数字。

0 投票
2 回答
335 浏览

flash - 垃圾收集器 Flash 播放器

有没有办法强制闪存垃圾收集器清理释放的内存?我已经看到闪存清理未引用的内存需要很长时间......