草庐IT

gc_probability

全部标签

c# - 在 Perfmon 中看到高 "% Time in GC"的原因

在PerfMon中监视我们的应用程序时,我注意到当我们的应用程序正在执行长时间运行的进程(在30秒到1.5分钟之间变化)时,GC中的时间百分比在20%到60%之间。这对我来说似乎有点过分。这提出了两个重要问题。我说得对吗?如何找出路由导致GC峰值的原因? 最佳答案 是的,这听起来有点过分。减少GC的数量可能是减少应用程序运行时间的最佳步骤(如果这是您的目标)。较高的“GC时间百分比”通常是由分配然后丢弃数千或数百万个对象引起的。找出发生了什么的一个好方法是使用内存分析器工具。Microsoft提供免费的CLRProfiler.这将向

java - GC(垃圾收集器)如何标记一个对象进行垃圾收集?

在Java中,有没有办法在其下一个cleanup循环中标记对象以供GC进行垃圾回收?我听说将对象设置为null不再有效。 最佳答案 不,你不能。如果另一个变量引用了它,你会期望发生什么?请注意,您不能将object设置为null-您只能将variable设置为null。如果另一个变量仍然具有对该对象的引用,则它仍然不符合垃圾回收条件。如果您认为需要这样做,这可能意味着您误解了数据-或者您的代码中的某处可能存在泄漏(例如,您只添加条目的列表,由静态变量引用-当类加载器处于Activity状态时,这些条目将永远无法进行垃圾回收)。每个J

c# - 当没有剩余内存时,.Net 和 Bitmap 不会被 GC 自动处理

我想知道为位图分配的内存的分配和处置如何在.NET中工作。当我在一个函数的循环中创建大量位图并连续调用它时,它会一直工作,直到某个点位图无法分配内存,给出指定大小的“无效参数”异常。如果我从while到while调用垃圾收集器。使用以下代码,您可以重现错误:classBitmapObject{publicboolVisible{get{returnenb;}set{enb=value;}}privateboolenb;privateBitmapbmp;publicBitmapObject(inti,boolen){enb=en;bmp=newBitmap(i,i);}}classPoo

Java GC 概念 : CMSInitiatingOccupancyFraction

我配置了以下内存选项:exportMEM_OPTS="-Xmx2560m-Xms2560m-XX:NewSize=786m-XX:MaxNewSize=786m-XX:+UseTLAB-XX:MaxPermSize=512m"我的GC参数如下:exportGC1_OPTS="-XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:**CMSInitiatingOccupancyFraction=50**-XX:+CMSPermGenSweepingEnabled-XX:+CMSClassUnloadingEnabled-XX:+CMSParallelRem

git - 有没有办法限制 "git gc"使用的内存量?

我在共享主机上托管一个git存储库。我的repo中必然有几个非常大的文件,现在每次我尝试在repo上运行“gitgc”时,我的进程都会因使用过多内存而被共享主机提供商杀死。有没有办法限制gitgc可以消耗的内存量?我希望它可以用内存来换取速度,并且只需要更长的时间来完成它的工作。 最佳答案 我使用了link中的说明.与CharlesBaileys相同的想法建议。命令的副本在这里:gitconfig--globalpack.windowMemory"100m"gitconfig--globalpack.packSizeLimit"10

c++ - RAII 什么时候比 GC 更有优势?

考虑这个在C++中演示RAII的简单类(从我的脑海中):classX{public:X(){fp=fopen("whatever","r");if(fp==NULL)throwsome_exception();}~X(){if(fclose(fp)!=0){//Anerror.Nowwhat?}}private:FILE*fp;X(Xconst&)=delete;X(X&&)=delete;X&operator=(Xconst&)=delete;X&operator=(X&&)=delete;}我不能在析构函数中抛出异常。我有一个错误,但没有办法报告它。这个例子非常通用:我不仅可以使用

c# - GC 与 C# 和 C++ 在同一解决方案中

我有一个由多个C#项目组成的解决方案。它是用C#编写的,以便快速运行。垃圾收集开始成为一个问题——我们发现我们希望避免大约100毫秒的延迟。一个想法是用C++重新编写它,一个项目一个项目。但是如果将C#与非托管C++结合起来,C++项目中的线程是否也会被垃圾回收卡住?更新感谢您的回复。事实上,这是一个100毫秒可能很重要的应用程序。用C#构建它可能是一个糟糕的决定,但它必须在当时快速启动并运行。现在,我们正在使用Windows的MultimediaTimers每5毫秒触发一次事件。我们确实看到了大约100多毫秒的间隔,并且我们通过检查GC计数器确认这些间隔总是在收集期间发生。优化开启;

c++ - C++ 有垃圾收集器(GC)吗?

我目前正在阅读一篇未发表的硕士论文报告,我将提供反馈。在报告中,他们提到了原生C++和托管C++下的垃圾收集器。我以为C++没有任何标准的GC,我是对还是错?(他们没有提到Boehm-Demers-Weiser。)他们在某些条件下无法正常工作。他们在一个线程中创建对象,然后从另一个线程中删除指针。 最佳答案 NativeC++默认没有这样的东西(最接近的东西是智能指针,但这仍然是完全不同的东西),但这并不妨碍你编写自己的垃圾收集解决方案(或使用thirdpartysolution)。托管C++(及其后续C++/CLI)当然对托管资源

node.js - nodejs v8内存gc分配失败

我正在尝试使用无操作服务器来分析nodejsv8内存。我使用node-memwatch来获取堆差异。我在连接之前和连接断开之后收集堆信息。我使用了Node内存监视。我从客户端尝试了200个并发连接。这是连接断开后的gc跟踪。谁能帮我理解:1.为什么内存在增加?连接断开后,服务器绝对什么都不做。它不应该假设总是随着垃圾被收集而丢弃吗?2.那些分配失败是什么?我如何真正解释这里的痕迹?15802ms:Mark-sweep8.9(45.0)->8.1(45.0)MB,58ms[allocationfailure][GCinoldspaceforcedbyflags].16144ms:Mark

JVM的三种常见GC:Minor GC、Major GC与Full GC

文章目录JVM的GCJVMGC的种类GC的触发机制年轻代GC(MinorGC)触发机制老年代GC(MajorGC/FullGC)触发机制FullGC触发机制为什么需要把Java堆分代?扩展:分代回收机制的三个假说JVM的GCGC:垃圾回收GC英文全称为GarbageCollection,即垃圾回收。Java中的GC就是对内存的GC。Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。Java对象的分配,程序员可以通过new关键字,Class的new-Instance方法等来显示的分配;而对象的释放,程序员不能实时的进行释放,这就需要GC来完成。JVMGC的种类JVM常见的GC包括