Questions tagged [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.
为什么在运行应用程序时,Android Logcat 中总是显示 GC_CONCURRENT FREED 和 GC_CONCURRENT ALLOCATE?
我想知道为什么每次运行任何应用程序时都会出现以下消息。
12-11 17:18:37.141: D/dalvikvm(3155): GC_CONCURRENT freed 485K, 9% free 6696K/7303K, paused 9ms+335ms
paused 9ms+335ms
由于这个暂停,我应该播放的音频丢失了,因为根据我的代码,它每次都会接收音频数据,40ms
所以在这里它暂停了9ms+335ms
这是10 times
数据丢失
我知道它执行某种垃圾收集,但我的问题是它为什么经常出现在 logcat 中。
感谢您的任何帮助!!!!!!!
如何在 C 中以可移植的方式管理内存对齐和通用指针算法?
我必须实现 malloc/realloc/free 的优化版本(为我的特定应用程序量身定制)。目前代码在特定平台上运行,但如果可能的话,我想以可移植的方式编写它(平台将来可能会改变),或者至少我想将可能的平台差异集中在一个单一的点(可能是 .h)。我知道一些问题:
- 内存对齐的差异
- 适合“通用”分配的最小内存块大小的差异
- 指针大小的差异
(这里我将忽略用于内存分配的基本系统服务的差异,因为在某些嵌入式系统上它们可能根本不可用。假设我们在一个大的预分配内存块上工作以用作“堆”)。
问题:
- C 中是否有用于这种目的的标准宏或函数?
- 在这份工作中我还可能面临哪些其他问题?
我是否需要释放我不保留的对象?
我保留了对该example
对象的引用,但我从不使用retain
,new
或copy
.
如果我将UILabel
Interface Builder 中的对象连接到example
,则保留计数为 2。但是当我不连接它时,保留计数为零。我认为我保留了一个参考,而视图保留了另一个,因此我需要释放它。你怎么看?
C++:是否可以有一个模板类来表示对资源的条件引用?
因此,有时我希望一个对象具有对共享资源的引用(比如说 type A
),或者拥有自己的A
.
此外,对象可能会发现自己插入并在容器 ( vector
, list
, set
) 内进行操作。
到目前为止,我所知道的是,unique_ptr
如果我有一个要在容器中的多态类型,我将想要使用一个实现。因此,对于HasAnA
拥有 an 的类,A
能够放置在容器内,同时仍然允许其A
' 也是B
'(B
在这种情况下是 的派生类A
),它必须是这样的:
所以这很好,我正在寻找的是如何实现一个我将调用的类RefersAnA
。我希望 aRefersAnA
要么拥有自己的 A 的所有权,要么引用其他东西拥有的 A。
让我们来看看。
对我来说,这并不像我想要的那么友好。我可以制作某种模板类来抽象“作为资源的唯一 ptr 或资源的原始 ptr”的概念吗?它需要一位来说明它是两者中的哪一个,以及一个指针。
C++/CLI 资源管理混乱
我对 C++/CLI 中的资源管理感到非常困惑。我以为我有一个句柄(不是双关语),但我auto_gcroot<T>
在查看头文件时偶然发现了这门课,这导致了谷歌搜索,然后是一天中大部分时间阅读文档,现在很混乱。所以我想我会转向社区。
我的问题涉及 auto_handle/stack 语义和 auto_gcroot/gcroot 之间的区别。
auto_handle:我的理解是,这将清理在托管函数中创建的托管对象。我的困惑是垃圾收集器不应该为我们这样做吗?这不是托管代码的全部意义吗?更具体:
现在,如果它是 C# using 关键字的替代品,这对我来说是有意义的,并且仅建议与 Bitmap 等资源密集型类型一起使用,但在文档中的任何地方都没有提到这一点,所以我担心我一直在泄漏内存现在的时间
auto_gcroot
我可以将它作为参数传递给本机函数吗?副本会发生什么?
如果我改用 gcroot,这会起作用吗?
此外,拥有 auto_handle 和 auto_gcroot 有什么好处?似乎他们做类似的事情。
我一定是误解了一些东西,所以没有什么意义,所以一个好的解释会很棒。此外,任何关于正确使用这些类型的指导、我可以去学习这些东西的地方以及我能找到它们的任何更多好的实践/地方都将不胜感激。
非常感谢,马克斯
本机进程的 Java 内存使用情况
调整使用本机 C++ 库的 Java 编写的服务器应用程序的最佳方法是什么?
环境是具有 4GB RAM 的 32 位 Windows 机器。JDK 是 Sun 1.5.0_12。
Java 进程在启动时获得 1024MB 内存 (-Xmx),但由于堆空间不足,我经常看到 OutOfMemoryErrors。如果内存增加到 1200MB,则会由于交换空间不足而发生 OutOfMemoryErrors。JVM 和本机进程之间如何共享内存?
Windows /3GB 开关是否对本机进程和 Sun JVM 有任何影响?
延迟图像加载和卸载内存分配问题.... Aaaargghhh
我正在构建一个滚动视图,它可以浏览 100 张房屋图像。有用。但是....对于每个查看的图像,分配的内存增加 2.5 MB。最后,应用程序因内存不足而崩溃。
即使我使用与下面代码中指定的相同图像,由于内存分配,我的内存也会用完。
我认为 NSMutableArray 在替换为另一个对象时会释放我的图像(因为保留计数变为零)。
是什么让我的图像无法卸载?如何卸载图像?
代码片段:
new[] 比 Win32 的 VirtualAlloc 快吗?
我正在测试一些字符串池分配器的性能:我考虑了这里介绍的调用VirtualAlloc
然后划分子分配的分配器,以及使用标准 C++(不直接调用任何 Win32 API)和new[]
.
我希望VirtualAlloc
版本更快,因为我认为开销应该比 C++ 少new[]
;但我观察到的结果是相反的:使用new[]
似乎比使用较低级别的VirtualAlloc
.
我跑了几次测试(代码是用VS2010 SP1编译的),输出是这样的:
为什么是这样?为什么new[]
似乎比 快VirtualAlloc
?
测试源代码如下:
如何在 iphone 中释放系统库分配(框架相关)
我面临系统库分配的大问题。
我没有从我的应用程序中得到任何泄漏,仍然有这么多的分配。我附上了各种屏幕截图。在我的应用程序中使用自定义选择器从断言库中获取所有图像。这些图像是从选择器中选择的,在滚动视图上显示图像。
当我的应用程序在滚动视图上有 35 个图像时,它的屏幕截图。如果我再次从自定义选择器分配中选择图像增加。我看到对象详细信息都与框架工作分配有关。不是从我的应用程序
看到分配对象列表响应库是 DYLD .
这是我的泄漏屏幕截图
我们如何释放这些分配?请帮帮我?
NSNumber 超出范围?
我已经编写了一个 Objective-C 类,并且在我的 iPhone 项目中的多个视图中使用了它的共享实例。它的成员变量包括 bools、ints、NSStrings 和一个 NSNumber。共享实例似乎在我的应用程序范围内工作得很好,除了调试器告诉我的 NSNumber 在第二次或后续访问共享实例后“超出范围”。
这是我正在做的事情的快速概述......
所以它可以在一个视图中访问,如下所示:
在另一个视图中以同样的方式。但是第二次访问它时,grossWage 成员超出了范围,但其他一切都很好——这就是我难过的原因。有任何想法吗?