草庐IT

日用量

全部标签

使用 -O2 编译 Haskell 会显着增加内存使用量

这个简单的程序在没有使用ghc标志的情况下编译时在恒定的内存空间中运行:importData.Listfx=x*xga=foldl'(+)(fa)[1..(1073741824-1)]main=doputStrLn$show$foldl'(+)0$mapg[0,1]使用ghc-O2编译时,内存使用量超过了系统资源(8GB)。将主要更改为:main=doputStrLn$show$foldl'(+)0[g0,g1]缓解了问题,因此它似乎与map有关。谁能解释一下这种行为以及如何解决它?GHC版本是:GlasgowHaskell编译器,版本7.4.1,由GHC版本7.4.1引导的阶段2

python - 为什么在与字符串共享 ctypes.Structure 与仅使用字符串时,子进程(python 多处理)的内存使用量如此不同?

以下代码使用multiprocessing的Array跨进程共享大量unicode字符串。如果我使用c_wchar_p作为类型,子进程的内存使用量大约是父进程使用的内存的四分之一(如果我更改数组中的条目数量,数量会发生变化)。但是,如果我将ctypes.Structure与单个c_wchar_p字段一起使用,则子进程的内存使用量是恒定的并且非常低,而父进程的内存使用量会翻倍.importctypesimportmultiprocessingimportrandomimportresourceimporttimea=NoneclassRecord(ctypes.Structure):_f

javascript - 为什么修改全局变量会增加 Chrome 中的内存使用量

最近我一直在优化javascript代码以制作HTML5游戏,尤其是针对移动浏览器。我从比较引擎开始,逐渐简化比较的代码,我得到了一些我不理解的东西。我注意到在Chrome中(所以我猜是所有基于webkit的浏览器)修改全局变量会导致使用的内存增加。让我给你举两个例子:1)修改全局变量:代码:varglobalVariable=0;varfps=60;window.onload=init;functioninit(){setInterval(loop,1000/fps);};functionloop(){for(vari=0;i内存时间线屏幕:如您所见,它在前10秒内需要收集大量内存!

python - 内存使用量 : creating one big set vs merging many small sets

我使用了%memit测量内存使用的魔术函数:In[1]:%memitn=pow(10,7);range(n)peakmemory:568MiB,increment:272MiBIn[2]:%memitn=pow(10,7);set(xrange(n))peakmemory:824MiB,increment:447MiB好的,所以似乎有一个中间步骤xrange(n)被实例化为一个完整的列表。但是,如果我将列表分成10个子列表,然后将它们一一合并呢?这样会更节省内存,对吧?In[3]:%memitn=pow(10,7);reduce(set.union,(set(xrange(p,n,10

c - 最低 504Kb 内存使用量

在学习C的同时做一些实验,我遇到了一些奇怪的事情。这是我的程序:intmain(void){sleep(5);}当它被编译时,可执行文件的文件大小为8496字节(与26字节的源代码相比!)这是可以理解的,因为调用了sleep并且在可执行文件中写入了调用指令。另一点是没有sleep,可执行文件变成4312字节。intmain(void){}我的主要问题是当第一个程序运行时会发生什么。我使用clang编译和MacOSX运行它。结果(根据事件监视器)是程序使用了504KB的“真实内存”。为什么程序只有4KB就这么大?我假设可执行文件已加载到内存中,但除了sleep调用之外我没有做任何事情。为

使用App时Java内存使用量增加,但不使用时不减少

我有一个java应用程序在使用时会占用大量内存,但是当程序不被使用时,内存使用量并没有下降。有没有办法强制Java释放这个内存?因为当时不需要这block内存,我可以理解为保留少量内存,但Java只是保留它曾经使用过的所有内存。它稍后也会重用这些内存,但必须有一种方法可以强制Java在不需要时释放它。System.gc不工作。 最佳答案 正如评论中所指出的,并不确定垃圾收集器在处理对象时是否会将内存归还给系统。也许TuningGarbageCollectionOutline为您的问题提供解决方案:BydefaulttheJVMgro

.net - 为什么 .NET 应用程序的内存使用量在最小化时似乎下降了?

例如,启动Paint.NET。然后用任务管理器看看它的内存使用情况:在我的电脑上,它使用了36Mb。然后最小化Paint.NET:现在它只需要1Mb多一点。每个.NET应用程序都会发生这种情况。最小化.NET应用程序时会发生什么?GC发生了吗? 最佳答案 任务管理器向您显示属于应用程序的内存量,该应用程序当时恰好被分页到实际内存中。当您在Windows中最小化应用程序时,内核会自动修剪进程工作集以减少内存占用。此行为并非特定于.NET应用程序。如果您改为查看进程的“PrivateBytes”值,这将更好地指示进程使用的内存量。修剪流

python - pypy内存使用量永远增长?

我有一个复杂的python服务器应用程序,它一直在不断地运行。下面是它的一个非常简化的版本。当我使用python运行以下应用程序时;“python主.py”。它立即使用8mb的内存,并保持在8mb的内存,因为它应该。当我使用pypy"pypyMain.py"运行它时。它从使用22mb的ram开始,随着时间的推移,ram的使用量会增加。30秒后为50mb,一小时后为60mb。如果我将“b.something()”更改为“通过”,它不会像那样吞噬内存。我在OSX10.7.4上使用pypy1.9我对pypy使用比python更多的ram没问题。有没有办法阻止pypy长时间消耗内存?impor

c++ - 为什么 Valgrind 使用 boost::thread 显示堆栈使用量增加?

写了一个简单的测试:#include#includeusingnamespacestd;voidmyThreadRun(){coutValgrindMassif在其上显示以下图表:(堆栈分析已启用。平台:LinuxUbuntux86)。这个程序实际上似乎没有内存泄漏:内存使用是稳定的。我想知道:这是Valgrind还是boost::thread的问题?还是我误解了什么?你会怎么解释? 最佳答案 这不是boost::threads,它也发生在普通的pthreads上。我从here获取了示例程序(Pthread创建和终止),将线程数增加

python - 如何找到扭曲服务器内存使用量增加的根源?

我有一个用Python编写并基于Twisted的音频广播服务器。它工作正常,但是当服务器上有更多用户时,它的内存使用量会增加,但是当这些用户下线时,内存使用量永远不会下降。如下图所示:你可以看到监听器/radio的曲线上升的地方内存使用曲线上升,但是监听器/radio的峰值之后,内存使用率仍然很高,从来没有下降过。我尝试了以下方法来解决这个问题:将Twisted从8.2升级到9.0使用guppy倾倒大量食物,但完全没有帮助将selectorreactor切换到epollreactor,同样的问题。使用objgraph绘制对象关系图,但我看不到点。这是我用来运行我的扭曲服务器的环境:Py