草庐IT

java - Maven-assembly-plugin 失败,超过 GC 开销限制

我有一个多模块Maven项目。其中一个模块使用maven-assembly-plugin。在整个项目上运行mvncleaninstall时,构建失败并出现GCOverheadlimitexceeded错误。我正在使用maven3.3.9(也尝试使用3.2.2)。maven-assembly-plugin的版本为2.5.5(也尝试使用2.6)。这是插件配置:maven-assembly-plugindist-assemblypackagesingleall${project.artifactId}-${project.version}-allfalsefalsetruelib...mym

java - 如何在 Java 9 中将 GC 日志写入命名管道?

在Java9之前,我们只需指定-Xloggc:/my/named/pipe即可将垃圾收集消息记录到namedpipe中。.但是,当指定-Xlog:gc*:file=/my/named/pipe时,JVM9会提示命名管道:[0.003s][error][logging]Unabletologtofile/my/named/pipe,/my/named/pipeisnotaregularfile.我们使用LinuxRedHat和jdk_9.0.1_x64。我们如何将GC消息记录到Java9中的命名管道? 最佳答案 查看UnifiedJV

Java G1GC 突然系统使用率飙升 100%

我们使用的是java1.8.144_b_01。我们遇到G1GC系统使用率突然飙升的问题,例如:从1到113、140,这比用户空间的CPU使用率非常高。那时对象复制时间变得非常高~是正常值的10倍,我经常看到以下日志:2018-03-09T14:55:30.111+0530:45966.639:[GCpause(G1EvacuationPause)(young)(to-spaceexhausted),2.1706858secs]在此之后负载平均值。开始飙升>100,当我在顶部看到时,我看到所有CPU都被系统空间占用,并且大多数情况下它在那里显示100%。所有这一切都是突然发生的~每天在A

java - Twitter4j TwitterStream 或 BufferReading 导致 java.lang.OutOfMemoryError : Java Heap Space

这是我的第一篇Stackoverflow帖子,如果不是很好,请见谅。反馈肯定会有帮助!我目前在使用TwitterStreamingAPI的项目中遇到了java.lang.OutOfMemoryError:JavaHeapspace问题。在传输大约500-1000条推文后出现错误,我无法查明是什么原因导致的。在StatusListener的onStatus方法中,我有以下代码:publicvoidonStatus(Statusstatus){tweetCount++;System.out.println("Tweet#"+tweetCount);StringstatusInfo=stat

java - 即使没有 gc 根,WebappClassLoader 内存泄漏

HEREISTHEHEADDUMP(UPDATEDON10/29/2013)我在一个网络应用中工作:Tomcat7.0.24Java6Spring3(使用aop-cglib)基于Log4j的SLF4JOracle一致性经过大量工作,我设法删除了所有对类加载器的强引用,现在它是垃圾收集器的候选者。那么,内存泄漏解决了吗?当然不是!因为在几次热部署之后,由于PermGen空间出现了OOME。感谢Yourkit,我能够检查WebappClassLoader是PendingFinalization这意味着它正在终结队列中等待(实际上,不是WebappClassLoader本身就是他的一个ref

java - 如何在 java 中找到匿名类的 GC 根?

就在今天,我发现我的应用程序中存在内存泄漏,大量对象创建为匿名类。这是一个典型的例子,每个对象都定义了自己的类并将其放入堆中。在运行时内存分析器中查找并非易事,Eclipse内存分析器完成的堆转储分析也无济于事。我想知道如何记录在运行时使用线程ID(或至少是父类加载器)创建的所有匿名类。我认为仅凭这一点就可以轻松找到根本原因。 最佳答案 我不确定列出所有匿名类是否能让你到达任何地方,通常有很多匿名类。您可能需要的是搜索由内部类引用(包括匿名类)保留的类实例的逻辑。在JProfiler,有相应的检查:检查创建的对象集包含所有此类实例,

java.lang.OutOfMemoryError GC 开销限制超过 Java 堆空间?

java.lang.OutOfMemoryError:Javaheapspace是什么意思该消息意味着应用程序只需要比正常运行可用的更多Java堆空间。java.lang.OutOfMemoryError:GCoverheadlimitexceeded是什么意思此消息意味着由于某种原因,垃圾收集器占用了过多的时间(默认情况下占进程所有CPU时间的98%),并且在每次运行中回收的内存很少(默认情况下占堆的2%)。这在内部也意味着当应用程序只需要比正常运行可用的更多Java堆空间时。那么我的问题是,以上两种情况会触发哪种情况?所以这是我的理解,何时会根据场景抛出特定异常:-假设我分配了1G

java - JVM 崩溃时 GC 日志被覆盖

我正在针对G1GC调整我们的产品,作为该测试的一部分,我的SparkWorker经常遇到段错误,这当然会导致JVM崩溃。发生这种情况时,SparkWorker/ExecutorJVM会自动重启,然后覆盖为之前的ExecutorJVM写入的GC日志。老实说,我不太确定ExecutorJVM如何自行重启的机制,但我通过init.d启动了SparkDriver服务,它又调用了一个bash脚本。我确实在该脚本中使用了一个时间戳,该时间戳附加到GC日志文件名中:today=$(date+%Y%m%dT%H%M%S%3N)SPARK_HEAP_DUMP="-XX:+HeapDumpOnOutOfM

java - JVM 在 gc 期间抛出 OutOfMemory,尽管还有足够的内存

我将我的java应用程序配置为使用5G内存。我突然遇到了OutOfMemory。我检查了gc日志,发现剩余内存充足:年轻代占用4%分配空间,tenure代占用5%,perm代占用43%。我很困惑为什么JVM在gc时间抛出OutOfMemory。有谁知道为什么会这样?非常感谢您的帮助。JVM内存和gc设置:-server-Xms5g-Xmx5g-Xss256k-XX:NewSize=2g-XX:MaxNewSize=2g-XX:+UseParallelOldGC-XX:+UseTLAB-XX:SurvivorRatio=8-XX:TargetSurvivorRatio=90-XX:+Di

Java GC 问题 : How could an object become unreachable while one of its methods is still being executed?

我一直在读theseslides关于Java终结器。在其中,作者描述了一个场景(在幻灯片33上),其中CleanResource.finalize()可以由终结器线程运行,而CleanResource.doSomething()仍在运行另一个线程。怎么会这样?如果doSomething()是一个非静态方法,那么要执行该方法的某个人,某个地方必须对其有强引用...对吗?那么如何在方法返回之前清除这个引用呢?另一个线程能否突然进入并清空该引用?如果发生这种情况,doSomething()是否仍会在原始线程上正常返回?这就是我真正想知道的,但是对于真的超越的答案,你可以告诉我为什么幻灯片38