问题标签 [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.
performance - 如何避免堆碎片?
我目前正在从事一个需要大量内存的医学图像处理项目。我可以做些什么来避免堆碎片并加快对已加载到内存中的图像数据的访问?
该应用程序是用 C++ 编写的,可在 Windows XP 上运行。
编辑:应用程序对图像数据进行一些预处理,如重新格式化、计算查找表、提取感兴趣的子图像......在处理过程中应用程序需要大约 2 GB RAM,其中大约 1.5 GB 可以使用为图像数据。
.net - .NET 大对象堆和 JSON 交互
我有一个使用 JSON 将数据序列化到客户端的 asp.net 应用程序。一旦负载达到一定水平,应用程序将在 GC 中花费大量时间,并且在使用 WinDbg/SOS 和相关工具一段时间后,由于生成的 JSON 的大小,似乎发生了大量 LOH 碎片通常大到足以超过 LOH 的 86K 边界。
我的问题是 2 倍 1) 有没有人运行这种 JSON 生成的特定场景会影响并导致 LOH 碎片和 2) 有没有人对如何处理它有任何建议。
linux - IP 数据包在源主机上分段的频率如何?
我知道,如果 IP 有效负载 > MTU,那么路由器通常会将 IP 数据包分段。最后,使用 IP-ID、IP 分段偏移和分段标志字段在目的地组装所有分段的数据包。IP 有效负载的最大长度为 64K。因此,L4 移交 64K 的有效载荷非常合理。如果 L2 协议是以太网(通常是这种情况),那么 MTU 大约为 1600 字节。因此,IP 数据包将在源主机本身被分段。然而,快速搜索一下 Linux 中的 IP 实现告诉我,在最近的内核中,L4 协议是分段友好的,即它们试图通过移交大小接近 MTU 的缓冲区来为 IP 节省分段工作。
考虑到这两个事实,我想知道 IP 数据包在源主机本身被分段的频率。它有时/很少/从不发生吗?有谁知道linux内核中的碎片规则是否有例外(即是否存在L4协议对碎片不友好的情况)?这在其他常见的操作系统(如 Windows)中是如何处理的?一般来说,IP 数据包分段的频率如何?
utility - 如何实现磁盘碎片?
我有一些想法想在磁盘碎片整理竞技场中尝试一下。我得出的结论是,作为实现的先驱,能够将磁盘置于碎片状态是很有用的。在我看来,这似乎是一种比碎片整理更难实现的状态。我认为商业碎片整理公司可能已经解决了这个问题。
所以我的问题......
一个人如何去实现一个分片器?在使用它来测试碎片整理程序的上下文中,有什么意义?
c# - WPF内存碎片
我有我认为是内存碎片问题。
我们最近将 WinForms 应用程序移植到 WPF 应用程序。此应用程序执行一些图像处理,并且此处理始终在应用程序的 WinForms 版本中工作。我们去WPF,处理死了。调试到库中会随机出现死亡,但总是有一个为空的数组,即分配失败。
处理本身是在一个由 ap/invoke 调用的 C++ 库中完成的,并且内存相当密集;如果给定的图像是 N x M 像素大,则图像是 N x M x 2 字节大(每个像素都是无符号短,并且是灰度图像)。在处理过程中,图像金字塔在浮点空间中,因此总内存使用量将是 N x M x (2 + 2 + 4 + 4 + 4 + 4),其中第一个 2 是输入,第二个2 是输出,前 4 是浮点数的输入,第二个 4 是第 0 级差异图像,最后两个四是金字塔的其余部分(因为它们是金字塔,每个级别是每个级别的一半大小方向,这 4 个是上限)。因此,对于 5000x6000 的图像,即 600 mb,应该可以很好地放入内存中。
(使用编组可能会增加另一个 N x M x 4 的内存需求,即 C# 端的输入和输出图像,然后将相同的数组复制到 C++ 端——编组要求会更大吗? )
与 WinForms 相比,WPF 的碎片化程度如何?有没有办法在运行这个处理之前整合内存?我怀疑由于破损的随机性,当它们发生时,碎片是问题,并且它始终是内存分配问题。
或者我应该通过使处理作为一个单独的进程运行,通过套接字或类似的东西传输数据来完全避免这个问题?
c# - 使用 .NET 时如何限制文件碎片?
在我的应用程序中,随着时间的推移,我将小数据位收集到一个更大的文件中。结果,目标文件变得过度碎片化。可以做些什么来限制使用 .NET 的输出文件的碎片?
mysql - Mysql OPTIMIZE TABLE 用于所有碎片表
我想要OPTIMIZE
所有当前碎片化的表。这些表应该有information_schema.DATA_FREE > 0
.
是否可以在 SQL 中的一个命令中优化具有此属性的所有表,还是我必须编写外部代码才能做到这一点?
sql-server - 用于重建和重新索引碎片索引的脚本?
当'avg_fragmentation_in_percent'超过某些限制(如果不使用游标更好)时,任何人都可以提供用于重建和重新索引碎片索引的脚本吗?
c# - 使用 Begin* End* 方法时,在 C# 中处理数据包碎片的工作示例是什么样的?
在玩够了异步套接字编程之后,我注意到服务器正在接收分块的有效负载(即:多个完整的有效负载位于同一个缓冲区中)。所以我想出了以下内容:
然后我注意到数据包碎片(即:我认为完整的有效载荷并不总是这样),这将之前的代码更改为:
*** 我什至不知道该怎么做,想看看它的代码。我有一个想法,它涉及将未完成的有效负载复制到缓冲区的开头,然后从那里拾取。
我包含的伪代码基于我正在使用的 Begin* End* 方法(我知道我应该使用此处找到的 *Async 方法集 -> http://msdn.microsoft.com/en-us /library/system.net.sockets.socketasynceventargs.aspx <- 但我认为我的整体问题仍然适用)。
我正在寻找 2 个问题的答案——即:
- 这种方法是正确的还是我错过了什么?
- 在 C# 中处理数据包碎片的工作示例是什么样的?
编辑:我正在使用原始套接字。
提前感谢您的所有帮助。
编辑:John Saunders 和 Greg Hewgill 提出了将数据视为流的观点,但这并没有为我提供如何处理有时被碎片化的最后一个分块有效负载的具体示例。
编辑:我在这里阅读了 Jon Skeet 的答案,该答案与我看到的其他答案基本相同,但它对我没有多大帮助,因为我已经得到了我必须做的事情,但不知道如何去做。
编辑:要详细说明碎片的含义,请考虑以下接收缓冲区:
- 224TEST3foo3bar
- 224TEST3foo3bar224TEST3foo3bar
- 224TEST3foo3bar224TEST3foo
- 3bar224TEST3foo3bar
编辑:我发现这个和这个导致我来到这里。Vadym Stetsiak几乎清除了所有问题(他是我一直在寻找的答案之一)。
filesystems - 内部和外部碎片
谁能告诉我在为文件分配磁盘空间时内部和外部碎片之间的区别?