草庐IT

gc_thresh

全部标签

ruby-on-rails - 在新遗物中启用 GC 分析

我有一个RubyonRails应用程序,我想用NewRelic监控GC。有关如何执行此操作的文档非常稀少。我已经让NewRelic从我的应用中收集数据。我想要的是添加GC分析。任何人都可以向我解释这是如何完成的吗? 最佳答案 您可以在应用程序初始化中使用以下调用之一在NewRelic中启用GC分析工具:MRI1.9.2或更高版本:GC::Profiler.enableRuby企业版:GC.enable_stats对于您的Rails应用程序,您可以将此调用添加到config/initializers中的初始化程序,或者将其直接添加到您

ruby - 为什么这个 XML 解析 Ruby 代码在禁用 GC 的情况下运行得更慢?

我有一段使用libxml-rubygem解析500MBXML文件的代码。令我惊讶的是,这段代码在GC禁用的情况下运行较慢,这似乎违反直觉。可能是什么原因?我有足够的可用内存,但系统没有交换。require'xml'#GC.disable@reader=XML::Reader.file('books.xml',:options=>XML::Parser::Options::NOBLANKS)@reader.read@reader.readwhile@reader.name=='book'book_id=@reader.get_attribute('id')@reader.readunti

go - 'gc' 和 'gccgo' 之间的主要区别是什么?

两种流行的Go编译器“gc”和“gccgo”之间的主要区别是什么?构建性能?运行时性能?命令行选项?许可?我不是在寻找关于哪个最好的意见,只是对它们之间的差异的基本概述,因此我可以决定哪个最适合我的需求。 最佳答案 你可以在“Settingupandusinggccgo”中看到更多:gccgo,acompilerfortheGolanguage.ThegccgocompilerisanewfrontendforGCC.Notethatgccgoisnotthegccompiler如“GccgoinGCC4.7.1”(2012年7月)

go - 'gc' 和 'gccgo' 之间的主要区别是什么?

两种流行的Go编译器“gc”和“gccgo”之间的主要区别是什么?构建性能?运行时性能?命令行选项?许可?我不是在寻找关于哪个最好的意见,只是对它们之间的差异的基本概述,因此我可以决定哪个最适合我的需求。 最佳答案 你可以在“Settingupandusinggccgo”中看到更多:gccgo,acompilerfortheGolanguage.ThegccgocompilerisanewfrontendforGCC.Notethatgccgoisnotthegccompiler如“GccgoinGCC4.7.1”(2012年7月)

Java GC : why two survivor regions?

对于Sun/Oracle的JVM,我读到GC算法将新一代划分为一个Eden区域和两个幸存者区域。我想知道的是,为什么有两个幸存者区域而不仅仅是一个?该算法可以在伊甸园和一个幸存者区域之间保持乒乓球(就像它目前在两个幸存者区域之间所做的那样);或者这种方法有什么缺点吗? 最佳答案 我相信JRockit的GC实现更像你建议的那样工作,只有一个伊甸园和一个幸存者空间,但不要引用我的话。HotSpotJVM有两个幸存者空间的原因是为了减少处理碎片的需要。新对象分配在伊甸园空间中。一切都很好。当它满了时,你需要一个GC,所以杀死陈旧的对象并将

Java GC : why two survivor regions?

对于Sun/Oracle的JVM,我读到GC算法将新一代划分为一个Eden区域和两个幸存者区域。我想知道的是,为什么有两个幸存者区域而不仅仅是一个?该算法可以在伊甸园和一个幸存者区域之间保持乒乓球(就像它目前在两个幸存者区域之间所做的那样);或者这种方法有什么缺点吗? 最佳答案 我相信JRockit的GC实现更像你建议的那样工作,只有一个伊甸园和一个幸存者空间,但不要引用我的话。HotSpotJVM有两个幸存者空间的原因是为了减少处理碎片的需要。新对象分配在伊甸园空间中。一切都很好。当它满了时,你需要一个GC,所以杀死陈旧的对象并将

java - System.gc() 什么时候做某事?

我知道垃圾收集在Java中是自动化的。但我知道,如果您在代码中调用System.gc(),JVM可能会或可能不会决定在此时执行垃圾收集。这如何精确地工作?当看到System.gc()时,JVM究竟基于什么/参数决定执行(或不执行)GC?是否有任何示例表明将其放入代码中是个好主意? 最佳答案 在实践中,它通常决定进行垃圾回收。答案因许多因素而异,例如您正在运行的JVM、它所处的模式以及它使用的垃圾收集算法。我不会在您的代码中依赖它。如果JVM即将抛出OutOfMemoryError,调用System.gc()不会阻止它,因为垃圾收集器

java - System.gc() 什么时候做某事?

我知道垃圾收集在Java中是自动化的。但我知道,如果您在代码中调用System.gc(),JVM可能会或可能不会决定在此时执行垃圾收集。这如何精确地工作?当看到System.gc()时,JVM究竟基于什么/参数决定执行(或不执行)GC?是否有任何示例表明将其放入代码中是个好主意? 最佳答案 在实践中,它通常决定进行垃圾回收。答案因许多因素而异,例如您正在运行的JVM、它所处的模式以及它使用的垃圾收集算法。我不会在您的代码中依赖它。如果JVM即将抛出OutOfMemoryError,调用System.gc()不会阻止它,因为垃圾收集器

GC耗时高,原因竟是服务流量小?

原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。简介最近,我们系统配置了GC耗时的监控,但配置上之后,系统会偶尔出现GC耗时大于1s的报警,排查花了一些力气,故在这里分享下。发现问题我们系统分多个环境部署,出现GC长耗时的是俄罗斯环境,其它环境没有这个问题,这里比较奇怪的是,俄罗斯环境是流量最低的一个环境,而且大多数GC长耗时发生在深夜。发现报警后,我立马查看了GC日志,如下: 日志中出现了to-spaceexhausted,经过一番了解,出现这个是由于g1在做gc时,都是先复制存活对象,再回收原region,当没有空闲空间复制存活对象时,就会出现to-space

GC耗时高,原因竟是服务流量小?

原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。简介最近,我们系统配置了GC耗时的监控,但配置上之后,系统会偶尔出现GC耗时大于1s的报警,排查花了一些力气,故在这里分享下。发现问题我们系统分多个环境部署,出现GC长耗时的是俄罗斯环境,其它环境没有这个问题,这里比较奇怪的是,俄罗斯环境是流量最低的一个环境,而且大多数GC长耗时发生在深夜。发现报警后,我立马查看了GC日志,如下: 日志中出现了to-spaceexhausted,经过一番了解,出现这个是由于g1在做gc时,都是先复制存活对象,再回收原region,当没有空闲空间复制存活对象时,就会出现to-space