草庐IT

java : Get heap dump without jmap or without hanging the application

在少数情况下,我们的应用程序使用了大约12GB的内存。我们尝试使用jmap实用程序获取堆转储。由于应用程序正在使用一些GB的内存,它会导致应用程序停止响应并导致生产出现问题。在我们的例子中,堆使用量在6小时内突然从2-3GB增加到12GB。为了找出内存使用趋势,我们尝试在重新启动应用程序后每隔一小时收集一次堆转储。但如前所述,由于使用jmap会导致应用程序挂起,我们需要重新启动它,并且我们无法获得内存使用的趋势。有没有办法在不挂起应用程序的情况下获取堆转储,或者是否有除jmap之外的实用程序来收集堆转储。对此的想法非常感谢,因为如果不了解内存使用趋势,则很难解决此问题。注意:我们的应用

c -/proc/pid/maps 中缺少 [heap] 部分

我正在试验一个不断分配内存的简单C程序:for(i=0;i此处粘贴完整代码:http://tny.cz/2d9cb3df但是,当我cat/proc/pid/maps时,我没有得到[heap]部分。为什么?08048000-08049000r-xp0000000008:1117/data/a.out08049000-0804a000r--p0000000008:1117/data/a.out0804a000-0804b000rw-p0000100008:1117/data/a.out0804b000-0805e000rw-p0000000000:000b74c6000-b75c8000r

字符串的 Java GC 调优

分析应用程序我发现堆上有很多字符串。在我的情况下,字符串是在堆上创建的,而不是被实习的,它们不是文字。当应用程序中的字符串数量非常多时,是否需要遵循特定的GC调整技术。我偶然发现了GC设置-XX:+UseCompressedStrings或-XX+UseStringCache,但不确定这是否会有所帮助。有没有人尝试过这些设置?java版本“1.6.0_22”Java(TM)SE运行时环境(build1.6.0_22-b04)JavaHotSpot(TM)64位服务器VM(内部版本17.1-b03,混合模式) 最佳答案 与-XX:+U

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

java - Tomcat内存消耗大于heap + permgen空间

我观察到操作系统所说的和jVisualVM所说的TomcatRAM消耗不匹配。从htop来看,TomcatJVM有993MB的常驻内存来自jVisualVM,TomcatJVM正在使用堆最大值:1,070,399,488B堆大小:298.438.656B使用的堆:变量,介于170MB和270MB之间最大永久代数:268,435,456B永久代大小:248,872,960B使用的PermGen:略有变化,大约150MB据我了解,操作系统内存消耗应该是堆大小+PermGen大小~=522MB。但这比我观察到的要少471MB。有人知道我在这里缺少什么吗?PS:我知道我的最大堆比使用的要高得多

ios - 没有 Heap shot 分析

我正在尝试找出我的应用程序在哪里放弃了内存以及我看到的所有资源都说标记了heapshot。但是我只有一个标记生成按钮。我应该在哪里找到堆射击按钮?或者它只是改变了。抱歉,我是iOS新手。 最佳答案 MarkGeneration按钮是heapshot按钮。在Xcode5和Xcode6中,Allocations工具的HeapshotAnalysis部分已重命名为Generations。 关于ios-没有Heapshot分析,我们在StackOverflow上找到一个类似的问题:

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

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