问题标签 [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 投票
5 回答
24815 浏览

optimization - 内存分配的时间复杂度

使用new、malloc等动态内存分配的时间复杂度是多少?我对如何实现内存分配器知之甚少,但我认为答案是它取决于实现。因此,请回答一些更常见的案例/实现。

编辑:我隐约记得听说堆分配在最坏的情况下是无限的,但我对平均/典型情况真的很感兴趣。

0 投票
8 回答
5526 浏览

optimization - 释放 alloca 分配的内存

是否可以在当前函数退出之前显式释放 C 的 alloca() 分配的内存?如果是这样,怎么做?

0 投票
10 回答
3636 浏览

c++ - 将动态分配的内存从 C++ 返回到 C

我有一个必须可以从 C 等中使用的 dll,所以我不能像往常一样使用字符串对象等,但我不确定如何安全地做到这一点。

当 ss 从堆栈中掉下来时,c 字符串会被破坏吗?我假设是这样...

另一种选择可能是在堆上创建一个新字符串,但要如何解除分配呢?

指向其他事物以及字符串的指针也是如此。

0 投票
2 回答
500 浏览

memory-management - 大树:何时在 RIA 中发布数据

这个问题是关于 Java JTree 或 Window .Net 树 (Winforms) 或 Adob​​e Flex 树。

在客户端-服务器应用程序中(对于 Flex,它实际上是 Web),我有一个带有分层数据的树(在 Windows 资源管理器类型的界面中)。现在,当用户从服务器请求更多数据时,我会懒惰地加载树。这很好,最多可以运行大约 750K 个节点(在 .Net Winforms 和 Adob​​e Flex 上进行了经验测试),但之后它变得迟缓。但是数据库增长很快(主要是因为用户可以粘贴大量节点),拥有 2000 万个节点的数据库并非不可能。

当分支折叠时我应该从树中释放数据以便垃圾收集器可以释放内存吗?这很好,但是如果用户没有效率并且不折叠分支怎么办?我应该做一个内存管理模块来关闭一段时间未触及的分支吗?

这一切似乎都需要做很多工作,以免内存不足。

编辑:我应该发布节点崩溃的数据吗?如果有,什么时候?弱对象缓存的想法很好,但我是否应该继续填充 UI 直到它崩溃(也许这不是一个坏主意)?

0 投票
7 回答
12642 浏览

iphone - 在 UIScrollView 中有相当大的图像的 UIImageViews 使用的内存释放问题

我有一个大的 UIScrollView,我在其中放置了 3-4 个相当大(320x1500 像素左右)的 UIImageView 图像图块。我将这些 UIImageViews 添加到我的 NIB 文件内的滚动视图中。我的控制器上有一个插座,那就是 UIScrollView。我为此使用了一个属性(非原子,保留),并对其进行了综合。

我的问题是:当我在内存监视器中观察到这一点时,我可以看到,当加载了所有这些图像的视图时(如预期的那样),使用的内存增加了很多。但是当我离开视图时,它和它的控制器被释放了,但似乎并没有放弃它们占用的内存附近的任何地方。当我将其中一个视图(我的应用程序中有几个)缩减为 1-3 个 320x460 的图像并保持其他所有内容相同时,它可以很好地重新捕获内存。

使用这么大的图像有什么问题吗?我在这段代码中做错了什么(粘贴在下面)?

这是导致问题的 viewController 的片段。

更新:我注意到另一个奇怪的现象。如果我不使用视图上的滚动,它似乎会挂在内存上。但是,如果我滚动一堆并确保所有 UIImageViews 在某一时刻都可见,它将释放并重新获得它丢失的大部分内存。

UPDATE2:我问这个的原因是我的应用程序实际上由于内存不足而崩溃。我不介意它是否只是缓存和使用额外的内存,但它似乎永远不会释放它 - 即使在 didReceiveMmoryWarning 条件下

0 投票
4 回答
1584 浏览

iphone - 便利方法与初始化方法的内存使用情况

最近在研究 iPhone 内存管理时,我尝试比较同一个对象上的便捷方法和 init 方法。例如,我有 UIImageView,它显示下载的 NSData:

便捷方法:

初始化方法:

当我尝试在视图上来回切换以增加内存使用量并点击“模拟内存警告”时,应用程序的内存使用量使用便捷方法从 20MB 变为 18MB,而 init 方法立即从 20MB 变为 13MB。

我还等待并与应用程序交互,以便在便捷方法的自动释放上释放时间。但并没有下降太多。

除了自动发布与发布之外,还有什么造成了差异?

0 投票
3 回答
256 浏览

memory-management - 什么构成了良好的内存配置文件?

在设计任何桌面应用程序时,是否有关于应用程序应使用多少内存的一般规则?

对于重量级应用程序,这些应用程序可以很容易理解或至少对其进行分析,例如 Firefox 或 Google Chrome。但是对于较小的实用程序或业务线应用程序,可接受的内存使用量是多少?

我问是因为我最近遇到了内存使用和性能之间的权衡,想知道是否对此有任何普遍共识?

编辑:平台是 Windows XP,适用于机器只能运行富 Internet 应用程序的用户。

我的具体权衡问题是在内存中缓存大量图像。如果可能的话,我希望我的应用程序缓存尽可能多的用户内存允许。我已经这样做了,以便应用程序将缓存到某个最大限制,考虑到目前的内存压力。.

但是什么是一个好的数字?你怎么想出一个?这就是我要问的重点。

0 投票
14 回答
142203 浏览

python - Python对象删除自身

为什么这行不通?我正在尝试使类的实例自行删除。

0 投票
3 回答
537 浏览

c# - 为您的应用程序请求内存

我和这个人有类似的问题。主要区别是应用程序并不适用于开发人员环境,因此我需要知道如何优化 Sql Server 使用的空间(可能基于规格的每台机器)。

我对Ricardo C 的回答很感兴趣,尤其是以下内容:

从 SQL Server 文档中提取:

最大服务器内存(MB)

指定 SQL Server 在启动和运行时可以分配的最大内存量。如果您知道有多个应用程序与 SQL Server 同时运行并且您希望保证这些应用程序有足够的内存来运行,则可以将此配置选项设置为特定值。如果这些其他应用程序(例如 Web 或电子邮件服务器)仅在需要时请求内存,则不要设置该选项,因为 SQL Server 会根据需要向它们释放内存。但是,应用程序通常会在启动时使用任何可用内存,并且在需要时不会请求更多内存. 如果以这种方式运行的应用程序与 SQL Server 同时在同一台计算机上运行,​​则将该选项设置为一个值,以保证应用程序所需的内存不是由 SQL Server 分配的。

我的问题是:应用程序如何在需要时从操作系统请求内存?这是编译中内置的东西还是由开发人员管理的东西?在这台机器上运行的两个主要应用程序是 Sql Server 和我正在开发的(相当重量级的)C# 应用程序,我几乎可以肯定我们在向操作系统请求内存方面没有专门做任何事情。有没有正确/必要的方法来做到这一点?

0 投票
2 回答
471 浏览

c - 虚拟区域到页面

在 Linux 内核中,给定task_structsmm我可以访问进程的vm_area_structs 列表。给定这些vm_area_structs,我如何获得struct page实际对应于这个 vma 的 s?

我尝试在 mm/memory.c 等中寻找函数,但不知所措。

编辑:想法是找出 vma 中的哪些页面当前在内存中,哪些不在内存中。但我希望有人告诉我该怎么做,因为这是我需要自己弄清楚的家庭作业的一小部分。但我似乎无法弄清楚如何找到与这个 vma 对应的页面。如果我能找到这些页面,我想我可以检查它们是否有有效的 pfn。