草庐IT

碎片化

全部标签

c# - RegEx、StringBuilder 和大对象堆碎片

如何在大字符串中运行大量RegEx(以查找匹配项)而不导致LOH碎片?它是.NETFramework4.0,所以我使用的是StringBuilder,所以它不在LOH中,但是只要我需要在其上运行RegEx,我就必须调用StringBuilder.ToString()这意味着它将在LOH中。这个问题有什么解决办法吗?像这样处理大字符串和正则表达式的长时间运行的应用程序几乎是不可能的。解决这个问题的思路:在思考这个问题时,我想我找到了一个肮脏的解决方案。在给定时间我只有5个字符串,这5个字符串(大于85KB)将被传递给RegEx.Match。由于新对象不适合LOH中的空白空间而发生碎片,这

delphi - 如何监视或可视化 delphi 应用程序的内存碎片

如何监控或可视化delphi应用程序的内存碎片? 最佳答案 大多数Delphi应用程序使用FastMM现在,如果您链​​接了源代码版本,则可以使用FastMMUsageTracker.pas文件,该文件创建一个单独的窗口,显示内存的使用情况,每秒钟左右更新一次。我获取了该文件中的代码并创建了一个记录到文件的版本,以便我可以在服务中使用它,但对于桌面应用程序,标准跟踪器可以很好地工作。 关于delphi-如何监视或可视化delphi应用程序的内存碎片,我们在StackOverflow上找到

c++ - 处理内存池中的碎片?

假设我有一个带有构造函数的内存池对象,该构造函数接受指向一大块内存ptr和大小N的指针。如果我执行许多不同大小的随机分配和解除分配,我可以让内存处于这样一种状态:无法在内存中连续分配M字节对象,即使可能有很多空闲空间!同时,我无法压缩内存,因为这会导致消费者指针悬空。在这种情况下如何解决碎片化? 最佳答案 我想加我的2美分只是因为没有人指出从你的描述中听起来你正在实现一个标准的堆分配器(即我们每次调用malloc()或operatornew时都已经使用的东西)。堆正是这样一个对象,它进入虚拟内存管理器并请求大块内存(您称之为“池”)

c++ - 64 位土地中的堆碎片

过去,当我处理长时间运行的C++守护程序时,我不得不处理堆碎片问题。为了避免耗尽连续的堆空间,需要保留大量分配池等技巧。这仍然是64位地址空间的问题吗?性能对我来说不是问题,所以我宁愿简化我的代码,不再处理缓冲池之类的事情。有没有人有关于这个问题的经验或故事?我使用的是Linux,但我想许多相同的问题也适用于Windows。 最佳答案 Isthisstillanissuewitha64bitaddressspace?不,这仍然不是问题。你说得对,这是32位系统上的问题,但它不再是64位系统上的问题。虚拟地址空间在64位系统上是如此之

c++ - 是否可以完全避免堆碎片?

例如,如果动态内存的释放总是以与分配相反的方向进行。那样的话,能保证堆不会碎片化吗?从理论的角度来看:对于非平凡的应用程序是否存在一些现实的方法来管理内存以完全避免堆碎片?(在堆中每次原子变化后,堆是否仍然没有碎片化?) 最佳答案 Existsomerealisticalwayfornontrivialapplicationhowtomanagememorytocompletelyavoidheapfragmentation是的。分配堆栈上的所有内容。这似乎是一个完美的建议,但我已经在不平凡的程序中做到了。编辑为了绝对清楚和避免疑问

javascript - Node.js 和碎片化

背景:我来自微软世界,我曾经将网站存储在IIS上。经验告诉我每天回收一次我的应用程序池,以消除由于碎片导致的奇怪问题。回收应用程序池基本上意味着在不重新启动整个IIS的情况下重新启动应用程序。我还观看了一个讲座,该讲座解释了微软如何在.Net4.5中大大减少了碎片化。现在,我正在将Node.js应用程序部署到生产环境中,我必须确保它始终能够完美运行。我原本想让我的应用程序每天重启一次。然后我做了一些研究,以便找到有关Node.js中碎片问题的一些线索。我发现的唯一东西是来自anarticledescribingGCinV8的一段片段。:Toensurefastobjectallocat

c++ - 多线程强调内存碎片吗?

说明当使用openmp的parallelfor构造分配和释放具有4个或更多线程的随机大小的内存块时,程序似乎在test-program's的后半部分开始泄漏大量内存。运行。因此,它将消耗的内存从1050MB增加到1500MB或更多,而不会实际使用额外的内存。由于valgrind没有显示任何问题,我必须假设看似内存泄漏实际上是内存碎片的突出影响。有趣的是,如果2个线程每个进行10000次分配,效果还没有显示,但如果4个线程每个进行5000次分配,效果就会很明显。此外,如果分配的block的最大大小减少到256kb(从1mb),效果会变弱。重并发可以那么强调碎片化吗?还是这更有可能是堆中的

c++ - 如何解决内存碎片

我们偶尔会遇到问题,即我们的长时间运行的服务器进程(在WindowsServer2003上运行)由于内存分配失败而引发异常。我们怀疑这些分配由于内存碎片而失败。因此,我们一直在寻找一些可能对我们有所帮助的替代内存分配机制,我希望有人能告诉我最好的一种:1)使用WindowsLow-fragmentationHeap2)jemalloc-在Firefox3中使用3)DougLea的malloc我们的服务器进程是使用跨平台的C++代码开发的,因此理想的解决方案也是跨平台的(*nix操作系统会遭受这种类型的内存碎片吗?)。另外,我认为LFH现在是WindowsServer2008/Vista

c++ - 什么是内存碎片?

我听说过在C++动态内存分配的上下文中多次使用“内存碎片”这个术语。我发现了一些关于如何处理内存碎片的问题,但找不到处理它本身的直接问题。所以:什么是内存碎片?如何判断内存碎片是否是我的应用程序的问题?哪种程序最有可能受到影响?处理内存碎片的常用方法有哪些?还有:我听说大量使用动态分配会增加内存碎片。这是真的?在C++的上下文中,我了解所有标准容器(std::string、std::vector等)都使用动态内存分配。如果在整个程序中使用这些(尤其是std::string),内存碎片是否更可能成为问题?如何在STL密集型应用程序中处理内存碎片? 最佳答案

云原生周刊 | 开源领导者应该如何应对碎片化挑战?

LinuxFundation发布了一份关于开源开发中的碎片化问题的报告《实现全球协作:开源领导者如何应对碎片化挑战》,该报告由华为在美国的研发部门Futurewei赞助。报告指出,虽然开源社区越来越国际化,但美国对开源共享和开发进行了过多的干预。同时报告里还提到了中国,随着中国提升其软件实力的需求越来越强烈,中国对开源项目的参与度将在未来几年内大幅提升。?报告链接:https://www.linuxfoundation.org/research/open-source-fragmentation文章推荐使用AWSlambda和ChatGPT来自动回复邮件本文介绍了如何使用AWSLambda函数