草庐IT

GC优化

全部标签

java - 内存泄漏在 MAT 中显示为 GC root : Native Stack

我有一些我运行的第三个库代码,一段时间后我遇到了OutOfMemoryError。所以我启动了EclipseMAT并分析了内存。现在似乎无法释放内存,因为有一个对象显示为GCroot:NativeStack。阅读documentation:Inoroutparametersinnativecode,suchasuserdefinedJNIcodeorJVMinternalcode.ThisisoftenthecaseasmanymethodshavenativepartsandtheobjectshandledasmethodparametersbecomeGCroots.Forexa

java - 即使没有 GC 根,类加载器也不会被垃圾回收

我们有一个在GlassfishV2.1.1下运行的复杂应用程序。为了能够动态加载我们的代码,我们实现了一个能够重新定义类的CustomClassloader。行为非常简单:当动态加载的类发生变化时,CustomClassloader的当前实例将被“丢弃”,并创建一个新实例来重新定义所需的类。除了同一个类被重新加载几次后(因此每次创建一个新的CustomClassloader),这工作得很好,我们得到一个PermGen空间错误,因为CustomClassloader的其他实例没有被垃圾收集。(该类应该只有一个实例)我尝试了不同的方法来追踪泄漏的位置:visualvm=>我进行堆转储并提取

java - 长时间 GC 在应用程序中暂停

我目前运行的应用程序需要最大堆大小为16GB。目前我使用以下标志来处理垃圾回收。-XX\:+UseParNewGC,-XX\:+UseConcMarkSweepGC,-XX:CMSInitiatingOccupancyFraction=50,-XX\:+DisableExplicitGC,-XX\:+PrintGCDateStamps,-XX\:+PrintGCDetails,-Xloggc\:/home/user/logs/gc.log但是,我注意到在某些垃圾回收过程中,应用程序会锁定几秒钟然后继续运行-这是完全不能接受的,因为它是游戏服务器。可以从我的垃圾收集日志中找到一份文件he

java - 哪些 VM 或 GC 支持 JNI 固定?

GetArrayElements函数族被记录为复制数组或将它们固定到位(并且这样做可以防止压缩垃圾收集器移动它们)。它被记录为比GetPrimitiveArrayCritical更安全、限制更少的替代方案.但是,我想知道哪些VM和/或垃圾收集器(如果有的话)实际固定数组而不是复制它们。 最佳答案 较旧的IBMJVM已固定(1.4及更早版本-即:不是当前的IBMJ9JVM),但从那时起,它们就没有了。一般来说,JVM不喜欢固定,因为它确实会扰乱复制垃圾收集器,而这正是当今大多数生产JVM所做的事情。我不是100%最新的(即:最新的Ja

java - 优化tomcat启动时间

我的应用程序非常大,例如在web-inf/lib中包含310个jar,总共100Mb。启动服务器,下面这一步需要13s:Sep16,20141:05:33PMorg.apache.catalina.startup.HostConfigdeployDirectoryINFO:DeployingwebapplicationdirectoryC:\apache-tomcat-7.0.47\webapps\ROOT应用程序依赖于网络片段和注释才能正常启动。我尝试了以下方法来跳过13秒的扫描时间:使用属性logEffectiveWebXml="true"修改conf/context.xmlcat

java - 最终静态与最终非静态字段和 JVM 优化

我很好奇JVM如何处理staticfinal字段。我看到一个类似的问题here但这不是我要找的。让我们考虑这样的例子:publicclassTestClassX{publicfinalintCODE_A=132;publicfinalintCODE_B=948;publicfinalintCODE_C=288;//someothercode}publicclassTestClassY{publicstaticfinalintCODE_A=132;publicstaticfinalintCODE_B=948;publicstaticfinalintCODE_C=288;//someoth

java - 为什么 WeakHashMap 在 GC 后对值有强引用?

WeakHashMap中的关键对象变得弱可达。并且map应该在GC之后删除条目。但是对值对象的强引用仍然存在。为什么?使用Guava弱键映射观察到相同的行为。预期输出:...refKey.get=nullrefValue.get=null但是我得到了输出:map.keys=[]map.values=[]map.size=0refKey.get=nullrefValue.get=(123)代码:importjava.lang.ref.WeakReference;importjava.util.Map;importjava.util.WeakHashMap;importcom.google

java - 如何在 Perl 中设置文件读取缓冲区大小以针对大文件对其进行优化?

我知道Java和Perl在读取文件时都非常努力地尝试找到一个适合所有默认缓冲区大小的统一尺寸,但我发现他们的选择越来越过时,并且在更改默认选择时遇到问题它涉及到Perl。对于Perl,我相信它使用8K默认缓冲区,类似于Java的选择,我无法使用perldoc网站搜索引擎(真正的Google)找到关于如何增加默认文件输入缓冲区大小的引用,比如64K。从上面的链接中,显示8K缓冲区如何无法缩放:Iflinestypicallyhaveabout60characterseach,thenthe10,000-linefilehasabout610,000charactersinit.Readi

java - 为 Java 音频应用程序调优 GC

我注意到在java中播放音频时,gc中的MarkSweepCompact阶段太长并导致短暂的静音,这是NotAcceptable。所以我需要使用低暂停gc。我尝试过Parallel和CMS,它们似乎工作得更好,因为我认为暂停时间更短,而且它们不像默认的那样频繁地进行完整收集。到目前为止,我已经使用以下ParallelGC选项测试了我的程序:-XX:+UseParallelGC-XX:MaxGCPauseMillis=70对于ConcurrentMarkSweep:-XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-XX:+CMSIncremen

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、自适应粒子群优化二、使用步骤代码总结前言提示:这里可以添加本文要记录的大概内容:下面是一个关于自适应粒子群优化(AdaptiveParticleSwarmOptimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考一、自适应粒子群优化自适应粒子群优化是一种优化算法,它是粒子群优化(ParticleSwarmOptimization,PSO)的一种变体。与传统的PSO不同,APSO使用自适应策略来调整算法的参数,以提高算法的性能和收敛速度。APSO的主要思想是根据群体的收