问题标签 [memory]
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.
c# - 追踪仅在一个客户的盒子上可见的内存泄漏 (C#) 的最佳方法
追踪仅在一个客户的测试/发布盒上发现的内存泄漏的最佳方法是什么?
c# - 找出对象在 .NET 中使用多少内存的最简单方法是什么?
找出对象在 .NET 中使用多少内存的最简单方法是什么?
最好不必求助于第三方工具。Marshal.SizeOf 或 sizeof 运算符看起来很有用,但仅适用于有限范围的类型。
一些相关的帖子:
c++ - 什么是数据区?
在 C++ 中,存储类说明符 static 从数据区域分配内存。“数据区”是什么意思?
c++ - 哪个更快:堆栈分配或堆分配
这个问题听起来可能相当初级,但这是我与另一位共事的开发人员进行的辩论。
我小心翼翼地在可能的地方堆栈分配东西,而不是堆分配它们。他正在和我说话,看着我的肩膀并评论说这没有必要,因为它们在性能方面是相同的。
我一直认为堆的增长是恒定的时间,堆分配的性能取决于堆的当前复杂性,用于分配(找到适当大小的孔)和取消分配(折叠孔以减少碎片,如如果我没记错的话,许多标准库实现在删除期间需要时间来执行此操作)。
这让我觉得可能非常依赖编译器。特别是对于这个项目,我将Metrowerks编译器用于PPC架构。了解这种组合会很有帮助,但总的来说,对于 GCC 和 MSVC++,情况如何?堆分配的性能不如堆栈分配吗?没有区别吗?或者差异如此之小以至于变得毫无意义的微优化。
ruby-on-rails - ruby/ruby on rails 内存泄漏检测
我使用 ruby on rails 编写了一个小型 Web 应用程序,它的主要目的是上传、存储和显示来自 xml(文件最多几 MB)文件的结果。运行大约 2 个月后,我注意到 mongrel 进程使用了大约 4GB 的内存。我对调试 ruby 内存泄漏进行了一些研究,但找不到太多。所以我有两个问题。
- 有没有什么好的工具可以用来查找 Ruby/rails 中的内存泄漏?
- 什么类型的编码模式会导致 ruby 中的内存泄漏?
visual-studio - Visual Studio 2005 内存使用情况
我发现 Visual Studio 内存使用量通常平均约为 150-300 MB RAM。
作为一个经常需要打开多个 Visual Studio 实例运行的开发人员,是否有任何性能技巧来优化 VS 使用的内存量?
我正在使用一个加载项 (TFS) 运行 VS 2005
java - Windows XP 上的 Java 最大内存
我一直能够为在 32 位 Windows XP(Java 1.4、1.5 和 1.6)上运行的 Java SE 分配 1400 兆字节。
今天我在使用 Java 1.5_16 和 1.6.0_07 的新 Windows XP 机器上尝试了相同的选项并得到了错误:
经过反复试验,我在这台机器上最多可以分配 1200 兆字节。
有什么想法为什么一台机器允许 1400 而另一台机器只允许 1200?
编辑:这台机器有 4GB 的 RAM,Windows 可以识别大约 3.5GB。
javascript - Firefox 的 Javascript 内存分析器
是否有用于 Firefox 的工具/插件/功能可以转储您在页面/脚本中创建的 Javascript 对象的内存使用情况?我知道 Firebug 的分析器,但我想要的不仅仅是时间。类似于 Yourkit 用于 Java 内存使用分析的东西。
原因是一位同事在数组中使用 id 作为“键”,并在他这样做时创建了 1000 个空槽。他认为这是无害的,而我的看法不同。我想提供一些证据来证明我是否正确。
c++ - 现代编译器在 C++ 中的“memset”功能状态
语境:
不久前,我偶然发现了 Alexandrescu 在 2001 年发表的这篇 DDJ 文章: http ://www.ddj.com/cpp/184403799
它是关于比较将缓冲区初始化为某个值的各种方法。就像“memset”对单字节值所做的一样。他比较了各种实现(memcpy、显式“for”循环、duff 的设备),并没有真正找到跨越所有数据集大小和所有编译器的最佳候选者。
引用:
这一切背后都有一个非常深刻和悲伤的认识。我们是在 2001 年,空间奥德赛之年。(...) 跳出框框看看我们——50 年后,我们仍然不擅长填充和复制记忆。
问题:
- 有没有人有关于这个问题的最新信息?最近的 GCC 和 Visual C++ 实现的性能是否明显优于 7 年前?
- 我正在编写生命周期为 5 年以上(可能 10 年以上)的代码,它将处理从几个字节到数百兆字节的数组大小。我不能假设我现在的选择在 5 年后仍然是最优的。我应该怎么办:
- a) 使用系统的 memset(或等效项)并忘记最佳性能,或者假设运行时和编译器会为我处理这个问题。
- b) 对各种数组大小和编译器一劳永逸地进行基准测试,并在运行时在多个例程之间切换。
- c) 在程序初始化时运行基准测试,并在运行时根据准确的 (?) 数据进行切换。
编辑:我正在研究图像处理软件。我的数组项是 POD,每毫秒都很重要!
编辑2:感谢第一个答案,这里有一些附加信息:
- 缓冲区初始化可能占某些算法总运行时间的 20%-40%。
- 该平台在未来 5 年以上可能会发生变化,尽管它将保持在“可以从 DELL 购买的最快 CPU”类别中。编译器将是某种形式的 GCC 和 Visual C++。雷达上没有嵌入的东西或异国情调的架构
- 我想听听那些在 MMX 和 SSE 出现时必须更新软件的人的意见,因为当“SSE2015”可用时我也必须这样做...... :)
objective-c - 避免、发现和消除 Cocoa 中的内存泄漏
发生内存(和资源)泄漏。你如何确保他们没有?
您会建议哪些技巧和技术来帮助避免首先造成内存泄漏?
一旦你有一个泄漏的应用程序,你如何追踪泄漏源?
(哦,请避免“只使用 GC”的答案。在 iPhone 支持 GC 之前,这不是一个有效的答案,即使那样 - 可能会在 GC 上泄漏资源和内存)