问题标签 [memory-fragmentation]
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 - How completely unused memory can be fragmented?
Following C code example (taken from http://bugs.python.org/issue19246) executed on Windows 7 64-bit, while compiled in 32-bit mode
Outputs:
Result may be interpreted as: after whole memory allocation and then freeing it, memory of the process is fragmented so bad, that there is no chunk with length of 1 MB. However, the stress procedure can be repeated continuously without memory errors.
The questions are:
- How memory can be fragmented if it is completely unused?
- How memory fragmentation can be fixed for that process?
memory-management - 是否可以同时拥有内部和外部碎片?
据我所知,内部碎片仅适用于固定大小的块,而外部碎片仅适用于动态大小的块。
将这种情况(显然有内部碎片)称为外部碎片在技术上是否正确?
比如说,进程 P 不能放入块 1 或块 2。但它可以适合他们的总和。
c - 这是内存碎片吗?(视觉工作室和mingw)
我有一个内存碎片问题,可以在这个小例子中总结:
程序打印(使用 MSVC(带有调试和释放分配器)和 Win7 上的 MinGW 编译):
无论如何我可以避免这种情况吗?在我的实际应用程序中,我无法避免这种情况,我的程序达到了 2GB 内存限制......但我希望能够通过释放一些东西来继续。
为什么首先在这个小例子中会出现碎片?当我开始做“free-s”时,为什么没有压缩内存块,因为它们应该是相邻的。
谢谢!
arrays - D 数组是否碎片化?
D中的数组是否碎片化?将指向第一个参数的指针传递给采用 C 数组的 C 函数是否安全?C 函数将覆盖数组内容。C 函数采用长度参数,因此它不需要以 NULL 结尾。(不是字符串)
c++ - “pragma pack 1”可以帮助避免堆碎片吗?
在我的程序中,我看到一些居民规模增加。我想这是因为堆碎片。所以我打算用#pragma pack 1
. 它会减少堆碎片吗?
它会产生其他一些开销吗?
我去还是不去?
c# - 一次构建一个大字符串并将其传递给 response.write 或为每个片段调用 response.write 是否更有效
在我们的 ASP.Net 4.0 网站中,我们每天都遇到 OutOfMemoryExceptions。我们怀疑问题之一是 LOH 碎片,因此我们一直在研究可以更有效地分配内存的代码更改。
例如,我们正在生成一个想要返回给浏览器的大字符串 (2mb)。分页数据不是一种选择。
是否更有效:
- 在 StringBuilder 中构建字符串,然后调用
Response.Write(bigString)
或 - 通过重复调用来逐个编写字符串
Response.Write(smallString)
如果我遵循选项 1,那么我将在 LOH 上占用一个大字符串,然后将其复制到 Response 对象的内部缓冲区。所以这看起来我现在至少暂时在 LOH 上有两个大街区。
如果我遵循选项 2,那么我将处理大量收集垃圾的小字符串,并且只有 LOH 上的一个大块用于响应对象的缓冲区。
所以在我看来选项2更好。
我是否正确理解这一点?
该服务器有 4gb 的 RAM,运行的是 Windows 2003 32 位。这是服务器上运行的唯一站点。所以每个进程都有 4gb 的地址空间,但只有 2gb 可用。当虚拟字节达到约 1.8Gb 时,我们开始收到 OOM 错误,然后我们回收解决问题的站点约 24 小时。私有字节在 500-800mb 之间变化。我认为问题不在于我们的物理内存不足。
java - 一个示例测试 java 代码,可以演示堆中的内存碎片
我想通过在 java 用户空间中编写一些错误的代码来了解内存碎片是如何发生的。
请指出一些可以帮助我理解这一点的想法。
在我的理解中,我的想法是,Java 堆碎片只会因为垃圾收集错误而发生,但我的一些朋友却持相反的观点。
我只是想了解编写糟糕的 Java 代码应用程序也会发生 Java 堆碎片。
注意:我正在寻找可以证明这个论点的代码片段。
更新:
实际上,我们在嵌入式设备中拥有的 jvm 是 java 1.3。
谢谢,
森
asp.net - 服务器上对空 html 页面的每个请求都会增加内存。这可能是什么原因造成的?
首先,我是一名初级开发人员,并且是 .Net 的新手
我们的 ASp.Net 网站应该很快就会投入生产。除了我意识到内存一直在 增加,即使我刷新了一个空的 html 页面。 它从大约 140 MO 开始,可以达到 1GO。我首先想到了内存泄漏,但调试工具似乎指出了内存碎片。这是关于 .Net 内存的 perfmon 指标的结果![perfmon:] https://drive.google.com/file/d/0B7K1cn6Fma9oMHJmVV8tWGZJem8/edit?usp=sharing
Intel corei5 CLR:4.0 VS2012 x64OS
memory-management - 连续内存分配中外部碎片的解决方案
在连续的内存分配中,我们有一个外部碎片的问题,但是我们不能根据我们的要求将所有可用的空闲内存小洞组合成一个大洞吗?
.net - PerfView 可以用于查找碎片来源吗
我发现 PerfView 是确定各种类型问题的根本原因的非常有用的工具。但是我不确定它是否也可以用来诊断 LOH 碎片问题。我使用 PerfView 收集了一个进程内存快照。在过去的这个过程中,我们观察到了 LOH 碎片,但当时我曾经从 !heapstat 命令中获取值。任何人都知道 PerfView 是否可以帮助确定:
- LOH 的碎片化程度有多严重
- 哪些对象可能导致这种碎片