草庐IT

GC_concurrent

全部标签

java - Full GC变得非常频繁

我有一个在一个tomcat实例上运行的Javawebapp。在高峰时段,Web应用程序每秒提供大约30个页面,通常约为15个页面。我的环境是:O/S:SUSELinuxEnterpriseServer10(x86_64)RAM:16GBserver:Tomcat6.0.20JVM:JavaHotSpot(TM)64-BitServerVM1.6.0_14JVMoptions:CATALINA_OPTS="-Xms512m-Xmx1024m-XX:PermSize=128m-XX:MaxPermSize=256m-XX:+UseParallelGC-Djava.awt.headless=

java - 具有大量引用字段(数组除外)的对象是否会破坏 Hotspot JVM 的 GC(s) 堆遍历性能?

假设我定义了aclasswithdozensofreferencefields(而不是使用Object[]等引用数组),并在应用程序中大量实例化此类。HotspotJVM中垃圾回收器遍历堆计算可达对象时会不会影响垃圾回收器的性能?或者,对于某些JVM的内部数据结构或类元数据,它可能会导致显着的额外内存消耗?或者,它会以其他方式影响应用程序的效率吗?这些方面是特定于Hotspot中的每个垃圾收集器算法,还是Hotspot机制的那些部分被所有垃圾收集器共享和使用? 最佳答案 让我改一下问题。“下面是A级还是B级更好?”classA{Ta

java - java.util.concurrent.Future 是线程安全的吗?

我正在尝试查找说明java.util.concurrent.Future是否是/不是线程安全的文档。例如,我能否安全地将同一个Future实例提供给多个线程,这些线程都将调用Future.get(...)?我已经以这种方式使用Future测试了代码,它似乎工作正常,但如果我能找到文件证明future以这种方式进行并发访问是安全的,我会更高兴。谢谢。 最佳答案 鉴于Future旨在供多个线程使用(至少是提交线程和设置结果的线程),并且文档指定异步计算和异步计算之间存在先行关系get调用之后发生的操作,我会假设这些实现是线程安全的(至少

java - 如果实例变量仍然有引用,Java GC 会销毁对象吗?

我已经在线阅读了一些Java垃圾收集指南,但我仍然有点不清楚,想确保我的代码中没有内存泄漏。JavaGC会收集失去引用的对象,但它的变量仍然有引用吗?假设我有SomeObject:publicclassSomeObject{publicObjectVarvar;publicSomeObject(){var=newObjectVar();}}还有我的代码:SomeObjectobj1=newSomeObject();SomeObjectobj2=newSomeObject();obj2.var=obj1.var;obj1=null;所以obj1的var有引用,但是obj1不再有任何引用。

java - Concurrent Mark Sweep (CMS) 是停止世界事件吗?

我看到很多类卸载,我的整个系统在那段时间会挂起..[Unloadingclasssun.reflect.GeneratedMethodAccessor117][Unloadingclasssun.reflect.GeneratedConstructorAccessor1896][Unloadingclasssun.reflect.GeneratedSerializationConstructorAccessor485][Unloadingclasssun.reflect.GeneratedSerializationConstructorAccessor579]....//about17

java - 需要有关 G1 的并行完整 GC 的解释

作为javaJDK10JEP307的一部分是ParallelFullGCforG1实现了。我试图理解它的描述,但我仍然不确定我是否正确理解了这个想法。我怀疑它是否与并发垃圾有关 最佳答案 作为一个简化的解释——垃圾收集器有两种可能的收集类型,“增量”和“完整”。增量收集是两者中最好的一种,因为它会经常做一些工作。完整收集通常更具破坏性,因为它需要更长的时间并且通常必须在运行时停止整个程序的执行。正因为如此,大多数现代GC(包括G1)一般都会尽量保证在正常情况下,增量回收就足够了,永远不需要全量回收。但是,如果不同世代的大量对象以不可

java - GC 日志旋转数据在应用程序重启时丢失

我使用这个jvm选项来创建gc日志并启用滚动:$java-Xloggc:gc.log-verbose:gc-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+PrintGCTimeStamps-XX:+UseGCLogFileRotation-XX:NumberOfGCLogFiles=5XX:GCLogFileSize=128K但是,当我重新启动应用程序时出现问题。重启后,第一个日志文件gc.log.0被覆盖,该文件的数据未滚动到gc.log.1,因此丢失。我想知道我是否正确,是否有解决方案。提前致谢! 最佳答案

java - 为什么看似不必要地触发 G1 Full GC?

我正在使用javaversion"1.7.0_09"Java(TM)SERuntimeEnvironment(build1.7.0_09-b05)JavaHotSpot(TM)64-BitServerVM(build23.5-b02,mixedmode)使用G1垃圾收集器。JVM参数是-server-Xss4096k-XX:MaxPermSize=512m-XX:PermSize=512m-Xms30G-Xmx30G-Xnoclassgc-XX:+UseNUMA-XX:+UseFastAccessorMethods-XX:ReservedCodeCacheSize=48m-XX:+Us

java - NoSuchMethodError : com. google.common.util.concurrent.MoreExecutors.directExecutor 在 Elasticsearch jar 上发生冲突

创建Elasticsearch客户端时,我遇到异常java.lang.NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;经过一番查找后,像Guava-18这样的接缝在运行时被旧版本覆盖,而Guava-18仅在编译任务期间有效。我的Maven配置如下:maven-compiler-plugin3.01.71.7org.apache.maven.pluginsmaven-shade-plugin2.4.1packag

java - 显式调用 System.gc()?

据说我们不能强制java中的垃圾回收进程。毕竟,它是一个守护线程。但有时,为什么我们显式调用System.gc();函数?值得调用吗?有什么优点和缺点吗?如果在很多情况下都没有用,为什么不从Java中弃用此方法?PS:举例说明会很有用 最佳答案 在我看来,考虑System.gc()方法的最佳方式是向VM发出垃圾收集应该运行的“提示”。也就是说,就像人们认为他们正在执行的大部分“优化”一样,通常最好让系统自己处理事情。系统在不断发展等等。在某些情况下,开发人员实际上可能知道得更多,并且它的用例可能与为什么某些代码仍然用汇编编写的原因非