草庐IT

gc-roots

全部标签

java - 为什么 GC 不收集我的对象?

我有一个java程序,它不断调用java.util.zip来压缩/解压缩数据。它会在几秒钟内耗尽内存。我使用jmap进行了内存转储,我正在使用jhat查看它。Finalizer摘要显示Totalinstancespendingfinalization:0。如果我理解正确,我没有任何对象(1)有finalize()方法,(2)已被GC标记,(3)正在等待完成。这看起来不错。当我查看特定对象时,对该对象的唯一引用是java.lang.ref.Finalizer。Finalizer对象是为每个具有finalize()方法的对象创建的,无论该对象是否被GC处理过。所以看起来没有什么能阻止这个D

java - 为什么我提高内存时更频繁地获得 GC?

我有一个关于g1gc的问题。这些是堆使用图。上面是-Xms4g-Xmx4g。最下面是-Xms8g-Xmx8g。我不知道为什么8g选项导致g1gc更频繁地发生。其他选项全部默认。服务器规范是40个逻辑进程。ps.Whatarethepropertuningoptions?附加问题内存分配是否可以更快,因为内存大小越大->区域大小越大?gc.log4Ggc.log2019-05-07T21:03:42.093+0900:10.280:[GCpause(G1EvacuationPause)(young),0.1785373secs][ParallelTime:43.4ms,GCWorkers

java - 如何理解Full GC日志?

我目前在PROD中看到以下内容:5429.779:[FullGC[PSYoungGen:13809K->0K(505216K)][PSOldGen:253802K->245481K(319488K)]267612K->245481K(824704K)[PSPermGen:70059K->70059K(118784K)],0.5869143secs][Times:user=0.59sys=0.00,real=0.59secs]我理解A->B(C)的意思是:A,gc之前,B之后gc,Cheapwithouttenuredandperm我不明白的是一block(在所有[]之外)是267612

超出 Java GC 开销限制 - 需要自定义解决方案

我正在用一个相当大的算法评估文本文件中的不同数据。如果文本文件包含多个数据点(我需要的最少数据点是某物,例如130万个数据点),则会出现以下错误:Exceptioninthread"main"java.lang.OutOfMemoryError:GCoverheadlimitexceededatjava.util.regex.Matcher.(UnknownSource)atjava.util.regex.Pattern.matcher(UnknownSource)atjava.lang.String.replaceAll(UnknownSource)atjava.util.Scann

解决 adbd cannot run as root in production builds

在adbroot的情况下经常碰到这种情况下载这个压缩包,在magisk中安装这个模块即可使用adbroothttps://github.com/tiann/adb_root安装后需要重启手机,该插件可能会自动关闭,手动打开后再次重启即可。Android11、Android13亲测可用。

在root账号下启动 elasticsearch

最新版本的 elasticsearch不能用root账号运行,但是每次启动都要切换到其他账号下面,也是一件很麻烦的事情。下面写个脚本,以指定用户运行elasticsearch假设服务器已经装好了elasticsearch,并且在`/usr/local/elasticsearch-8.11.4`目录下面首先创建一个运行账号,执行 useraddelasticsearch然后写个脚本elasticsearch.sh,内容如下#!/bin/shsu-elasticsearch-c"cd/usr/local/elasticsearch-8.11.4/bin/elasticsearch"然后可以执行`/

java - GC(分配失败)VS OutOfMemoryError 异常

'OutOfMemoryError':通常,当Java堆中没有足够的空间分配对象时会抛出此错误。GC(分配失败):AllocationFailure”表示存在大于年轻代可用空间的分配请求。这是否意味着新生代内存满时(MinorGC)会抛出AllocationFailure,fullGC会抛出OutOfMemoryError? 最佳答案 据我所知,这些可能变得相关;但它们是完全不同的东西。OutOfMemory是一个您无法从中恢复的错误-此时JVM将死掉。GC(AllocationFailure):AllocationFailure是

Java 垃圾回收和原子事件/停止 gc 暂停中断一系列函数调用

我有一个复杂的大型多线程应用程序,我正在为其引入新功能。我添加了对一个专业硬件的调用(通过供应商提供的JNI库)。然而,在此(非常快的)函数被调用之前,一些工作是预先完成的,以填充发送给它的数据结构。然而,应用程序的GC配置文件非常不稳定/糟糕,并且这些填充步骤中的一些似乎被GC中断了。这很重要,因为在这些事件中的第一个事件和移交给硬件资源之间的时间需要保持恒定或尽可能恒定。有没有办法说“为GC同步”,这些操作不会在stoptheworldGC暂停期间被阻止?在RHL5.5上使用64位1.7JDK谢谢 最佳答案 如果实际上是在完整垃

java - Java 的 G1 垃圾收集器 (G1GC) 中的类卸载

在Java6中,我们曾经使用以下GC配置来防止在多次重新部署我们的应用程序后出现PermGenOutOfMemoryException:-XX:+UseConcMarkSweepGC-XX:+CMSClassUnloadingEnabled我们正在迁移到Java7并希望使用新的G1GC,根据我的阅读,它将类从Java内存中的PermGen移动到native内存。是否有一些标志可以启用卸载未使用的类? 最佳答案 G1在FullGC期间执行类卸载,因此您无需指定任何参数即可启用此功能。您可以使用-XX:+TraceClassUnload

java - SpEL 中的#root 和#this

在Spring3SpEL中,引入了#this和#root。Thevariable#rootisalwaysdefinedandreferstotherootcontextobject.Although#thismayvaryascomponentsofanexpressionareevaluated,#rootalwaysreferstotheroot.我看了文档,还是不明白#root是什么意思(没有例子)。有人可以给我举个例子吗? 最佳答案 假设我们有以下代码片段,它用几个素数填充一个列表,并将其定义为SpEL上下文中的一个变量: