我正在尝试在 Nuxt.js Vue 文件的 @apply 标签中使用 Tailwindcss <style> 指令。一切正常,但我不断收到一些烦人的红色波浪线。拜托了,伙计们,我需要帮助...谢谢!
顺晟科技
2021-08-28 09:38:57
81
有时会出现问题。长时间运行的服务器进程(在Windows Server 2003上运行)因内存分配失败而引发异常。我们怀疑这种分配因内存碎片化而失败。
因此,我们正在寻找对我们有帮助的替代内存分配机制。希望有人能告诉我更好的:
1)使用Windows Low-fragmentation Heap
2)用于jemalloc-Firefox 3
3) Doug Lea的malloc
我们的服务器流程是使用跨平台C代码开发的,因此所有解决方案都是理想的跨平台解决方案(*nix操作系统是否经历了这种类型的内存碎片化?)。
另外,您是否认为LFH是当前Windows Server 2008/Vista的默认内存分配机制?如果客户只升级服务器操作系统,我现在的问题会“消失”吗?
更好的答案
首先,我同意其他鼓励资源泄漏的海报。你真想先排除这一点。
希望当前使用的堆管理器有一种方法,可以转储堆中的实际可用空间总量(跨越所有可用块)和分区块总数。如果平均可用块大小与堆的总可用空间相比相对较小,则存在碎片问题。或者,如果可以转储更大可用块的大小并与总可用空间进行比较,则会执行相同的操作。发生碎片化时,更大的可用块小于所有块中的总可用空间。
为了使上述内容非常明确,在所有情况下,我们都在讨论堆中的空闲块,而不是分配给堆的块。(大卫亚设,Northern Exposure(美国电视),成功)不管怎样,如果上述条件不能满足,你肯定会有某些泄漏。
因此,如果清除泄漏,可以考虑使用更好的分配器。问题中提出的Doug Lea的malloc是非常好的通用应用程序分配者,在大多数情况下非常坚固。也就是说,这是一个耗时的测试,适用于大多数应用程序。但是,没有适合所有应用程序的算法,任何管理算法方法都有可能受到违反设计的正确病理条件的损害。
为什么会出现碎片问题?-碎片化问题的根本原因是应用程序行为引起的,与同一内存区域中截然不同的分配生命周期相关。也就是说,一些对象定期分配和释放,其他类型的对象在同一个堆中持续很长时间。寿命较长的对象被认为是在体育场更大的区域钻孔,防止合并释放的相邻块。
为了解决这些问题,更好的事情是逻辑地将堆划分为生命周期更相似的子区域。实际上,需要一个临时堆和一个或多个堆,将具有相似生命周期的东西组合在一起。
其他人提出了另一种解决问题的方法,试图使分配大小更相似或相同,但这是不可取的,因为他们创造了各种类型的碎片,称为内部碎片。这实际上是浪费的空间。在块中调配所需的内存,分配更多的内存。(约翰肯尼迪,内存,内存,内存,内存,内存,内存,内存,内存)
另外,使用好的堆分配器(如Doug Lea),不必使块大小更相似。由于分配器已经运行两种大小的桶方案,因此完全不需要将手动调整传递给Malloc()。实际上,他的堆管理器会自动执行此操作。这比应用程序可以进行的调整要好得多。
29
2021-08
28
2021-08
16
2019-08