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

objective-c - Objective C 中的对象分配和初始化

以下两种分配和初始化对象的方法有什么区别?

大多数苹果示例使用第一种方法。为什么要分配、初始化和对象然后立即释放?

0 投票
2 回答
21400 浏览

c++ - 使用 .reset() 释放具有唯一所有权的 boost::shared_ptr

我将一个对象 ( TTF_Font) 存储在shared_ptr从第三方 API 提供给我的 a 中。我不能在对象上使用 new 或 delete,因此shared_ptr还提供了一个“释放”函子。

如果稍后我需要显式释放此对象,这样做是否正确:

然后让screenFont(实际shared_ptr对象)自然销毁?

0 投票
1 回答
1080 浏览

regex - 为什么我的 Perl 正则表达式使用这么多内存?

我正在对一个大标量运行正则表达式。虽然这场比赛没有捕捉到任何东西,但我的进程在这场比赛之后增长了 30M:

$c是对一个相当大的标量(大约 21M)的引用,但我已经验证它pos(${$c})在正确的位置,并且表达式在第一个字符处匹配,并在匹配pos(${$c})后更新到正确的位置。但正如我所提到的,这个过程在#A 和#B 之间增长了大约 30M,即使我没有用这场比赛捕捉到任何东西。我的记忆去哪儿了?

编辑:是的,使用$&是罪魁祸首。我们使用的是 Perl 5.8.8,而我的脚本使用的是Getopt::Declare,它使用内置的Text::Balanced。该模块的 1.95 版本使用$&. Perl 5.10 附带的 2.0.0 版本删除了对的引用$&并缓解了该问题。

0 投票
3 回答
523 浏览

python - 清除列表

我发现我无法清除列表很烦人。在这个例子中:

我第二次将 a 初始化为一个空白列表,它创建了一个列表的新实例,它在内存中的不同位置,所以我不能用它来引用第一个,更不用说它效率低下。

我可以看到保留相同指针的唯一方法是执行以下操作:

不过,这似乎很冗长,有没有更好的方法来解决这个问题?

0 投票
5 回答
16745 浏览

visual-studio - Visual Studio 2005 内存使用情况

我发现 Visual Studio 内存使用量通常平均约为 150-300 MB RAM。

作为一个经常需要打开多个 Visual Studio 实例运行的开发人员,是否有任何性能技巧来优化 VS 使用的内存量?

我正在使用一个加载项 (TFS) 运行 VS 2005

0 投票
5 回答
2680 浏览

c++ - 函数内的字符串文字:自动变量还是在堆中分配?

我们在函数内部使用的字符串文字是自动变量吗?或者它们是否分配在我们必须手动释放的堆中?

我的情况类似于下面显示的代码,其中我将字符串文字分配给类的私有字段(在代码中标记为 ONE)并稍后在我的程序中检索它并使用它(标记为 TWO)。我是否将堆栈中的变量分配给 ONE 中的字段?代码是否可以引用一个悬空指针,在这种情况下它可以工作,因为程序足够小?

我已经编译并运行了它,它运行良好,但是在我的实际程序中出现了奇怪的崩溃,我将字符串文字分配给这样的类的字段,我怀疑我上面提到的情况。

我应该将变量“s”声明为 char 数组而不是指针吗?我打算使用std :: string,但我只是对此感到好奇。

一如既往,非常感谢任何指针或帮助:) 谢谢。

0 投票
10 回答
30290 浏览

java - Java 中的循环引用

给定一个以复杂、循环的方式相互引用的类实例的聚合:垃圾收集器是否可能无法释放这些对象?

我隐约记得这是过去 JVM 中的一个问题,但我认为这在几年前就已经解决了。然而,对 jhat 的一些调查显示,循环引用是我现在面临的内存泄漏的原因。

注意:我一直认为 JVM 能够解析循环引用并从内存中释放这些“垃圾岛”。但是,我提出这个问题只是为了看看是否有人发现了任何例外。

0 投票
5 回答
14245 浏览

ruby - Ruby 内存管理

我使用 Ruby 已经有一段时间了,我发现,对于更大的项目,它会占用相当多的内存。在 Ruby 中减少内存使用的最佳实践是什么?

  • 请让每个答案都有一个“最佳实践”,并让社区投票。
0 投票
20 回答
319065 浏览

c++ - 在什么情况下我使用 malloc 和/或 new?

我在 C++ 中看到有多种分配和释放数据的方法,我知道当你调用时malloc你应该调用free,当你使用new操作符时你应该配对,delete将两者混合是错误的(例如调用free()创建的东西与new操作员),但我不清楚何时应该在我的现实世界的程序中使用malloc/free以及何时应该使用new/ 。delete

如果您是 C++ 专家,请告诉我您在这方面遵循的任何经验法则或约定。

0 投票
5 回答
727 浏览

c# - 托管环境中使用的最大堆?(.net/java)

您个人在 Java 或 .NET 等托管环境中使用的最大堆是多少?你遇到了哪些性能问题,你最终得到的收益是否会随着堆的增大而递减?