草庐IT

碎片化

全部标签

go - C 代码是否享受 Go GC 的碎片预防策略?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion更正了错误的暗示:Golang的GC执行虚拟地址空间碎片整理碎片预防策略,这使程序能够运行很长时间(如果不是永远的话)。但似乎C代码(cgo或SWIG)无法更新它的内存指针,以防它们被移动到别处。从这些策略中获益。这是真的吗?C代码不会受益于Golang的虚拟地址空间碎片整理碎片预防,最终得到碎片吗?如果那是假的,怎么办?此外,C代码加载的任何DLL代码(例如WindowsDLL)会怎样?(问题已

qt - Qt无框透明窗口中的文字碎片

我正在尝试使用Qt及其go-bind(https://github.com/therecipe/qt)创建一个无框透明窗口。我遇到的问题是文字碎片残留在无框透明窗口中。请看Gif(https://i.imgur.com/47OC7ps.gif)。我确认的问题的特征如下。问题只出现在调整大小的窗口中。(但不是100%)最初只有文本显示在窗口中的将保留为碎片。这个问题可以通过在QMainWindow本身显式调用Hide()、Show()来避免,但是会出现性能问题。我预计会考虑调整应用程序的大小,因为问题仅发生在调整大小的窗口中。有什么想法吗?我的环境如下:Qt:5.12.0我的应用源代码:

macos - 如何对 Go 工作区进行碎片化

所以我遇到了整个Go工作区和我自己的个人代码组织的问题。因此,我了解工作区应该如何设置为在一个总体gocode文件夹下使用src、pkg和bin。但是,这并没有很好地融入我的工作流程。在我的代码文件夹中,我还有另外两个文件夹:Work和Personal。工作当然是包含我为工作所做的所有项目的文件夹,个人是个人副项目或有趣的测试。在这两个文件夹中,我都有Go项目,以及JavaScript、python和HTML项目。我真的不想在同一个Go文件夹中将Work和Personal一起交叉,因为我想cd进入Work并查看我的所有项目(为了引用或便于访问),对于Personal也是如此。我不想在一

go - 如何在 go 中实现碎片化的配置文件验证

我尝试通过配置文件(yaml)配置CLI应用程序。该应用程序有几个“组件”(比方说持久层、集成网络服务器等)。这些组件在子包中进行管理,以保持代码整洁。这些组件的配置在它们的包中定义并在配置包中“合并”到表示配置文件的结构。将此代码视为演示实现:packagemainimport("errors""fmt"yaml"gopkg.in/yaml.v2")////Thiswouldbeinpackage'webserver'//OnlytheConfigpartisshown,therewouldbeaconstructorandtheimplementationof//thewebser

c++ - 大数据 block 的 C++ 中的碎片 (Windows)

我一直在使用malloc()分配内存来开发我的程序。但是,我的调查让我认为我面临着内存碎片问题。我的程序需要5次内存分配,每次分配约70MB。当我使用4个线程运行我的程序时,我需要5x4内存分配,每个内存分配~70MB(而且我不能使用更少的内存)。最后,我希望能够使用我的i7的8个内核,即5x8内存分配。如果我执行5x2malloc()s,程序就可以运行。不适用于5x3malloc()。我一直在阅读有关std::vector和std::deque的内容。我相信std::deque是我解决这个问题的方法,因为std::vector分配了一大块连续的内存作为malloc()确实如此。是否还

java - 有没有办法访问/计算 Java 中磁盘碎片的百分比?

以与JavaSysMon类似的方式思考,有没有办法在Windows操作系统上获取磁盘碎片百分比?或者可能是一种基于分析文件系统来计算它的方法。为澄清起见,我指的不是JVM堆碎片,而是实际的磁盘碎片。 最佳答案 据我所知,在纯Java中无法做到这一点。此外,这样的API必然是特定于操作系统的,除了极少数程序员外,对所有人都没有用处。所以不要指望Oracle会很快添加这样的API。最好的办法是寻找一些可以完成这项工作的Windows兼容命令行实用程序,并使用System.exec(...)或类似的工具从您的Java应用程序中运行它。

windows - 告诉故事内存碎片的迹象(而不是内存泄漏)?

首先我意识到泄漏会导致内存严重碎片化,但请耐心等待。使用WinDbg并附加到进程:使用!heap(或另一个WinDbg命令),如果我正在处理内存碎片而不是泄漏,我应该期待什么?例如,我可以使用“!heapstat”和“!heapstat-hhandle”来归零产生泄漏的代码;但是在这些相同的返回值中是否有暗示碎片化的东西?XP和Vista之间的内存分配是否发生了根本性变化?特别是与DLL和其他库加载有关?我们一直只在XP上开发,所以我不熟悉Vista,但事实证明,当我们在Vista上安装相同的二进制文件时,我们在XP上看到的某些内存问题就会消失。谢谢! 最佳

windows - 注册表碎片整理程序

这个问题在这里已经有了答案:RewriteRegistryFileinWindows(3个答案)关闭9年前。这是出于好奇,但我见过几种(其中一些非常流行)名为注册表碎片整理程序的软件。虽然我可以看到它们提供的好处,但我很好奇您究竟是如何进行注册表碎片整理的?请注意,我不是在询问软件名称,只是对如何以编程方式完成的基本描述。我知道微软有磁盘碎片整理API。这是他们正在使用的吗?还是有“注册表碎片整理”api?

c# - 大型阵列和 LOH 碎片。公认的惯例是什么?

我还有一个Unresolved问题HERE关于一些可能涉及LOH碎片以及其他未知数的绝望内存问题。我现在的问题是,公认的做事方式是什么?如果我的应用程序需要在VisualC#中完成,并且需要处理大型数组到int[4000000],我怎么能不因为垃圾收集器拒绝处理LOH而注定?似乎我被迫将任何大型数组设为全局数组,并且从不在它们周围使用"new"一词。因此,我只剩下带有“maxindex”变量的不优雅的全局数组,而不是通过函数传递的大小整齐的数组。我一直被告知这是不好的做法。还有什么选择?System.GC.CollectLOH("Seriously")是否有某种功能?是否有可能将垃圾收

c# - 使用字节数组时的堆碎片

我有一个C#4.0应用程序(单一生产者/单一消费者),它以block的形式传输大量数据。虽然没有新的内存分配,但我在一段时间后内存不足。我使用Redgate内存分析器分析了内存,那里有很多空闲内存。它说由于碎片无法使用空闲内存。我使用阻塞集合作为缓冲区,使用字节数组作为成员:BlockingCollectionsegments=newBlockingCollection(8);//producer:segments.Add(buffer);//consumer:byte[]buffer=_segments.Take();如何避免托管内存碎片? 最佳答案