草庐IT

收集箱

全部标签

java - 对实习生字符串、字符串池和永久空间的垃圾收集

在探索了java的字符串内部结构之后,我对所谓的“永久空间”感到困惑。我最初对它的理解是它包含Stringliterals以及类元数据,如thisquestion中所述。.我还阅读了有关String.intern()方法的内容,它会将String放入字符串池中,返回对它的唯一实例的引用。据我了解,这是保存存在于JVM永久空间中的字符串文字的同一个字符串池。在我看来,“永久空间”似乎不可能是可修改的(毕竟它是永久性的,是吗?)。但后来我发现thisquestionEJP对已接受答案的最高投票评论解释说Intern'dstringshavebeenGC-ableforquitesomeye

java - 静态最终对象是否会被垃圾收集器删除?

我以前在Java服务中使用过自定义对象,该服务始终在后端运行,有时我会收到错误报告,其中显示NULL_POINTER_EXCEPTION对象已被垃圾收集器销毁.由于我拥有所有高端设备,因此我无法测试静态最终对象是否被垃圾收集器销毁? 最佳答案 在普通的Java应用程序中(我不确定Android),一个staticfinal引用的对象只有在其适当的ClassLoader被卸载时才会被GC。例如,当一个容器(例如Tomcat)中有多个Web应用程序时,取消部署每个Web应用程序,卸载应用程序的ClassLoader,因此应用程序的sta

java - 在 Clojure 中强制垃圾收集是个好主意吗?

我有一个Clojure程序,它在运行时消耗了大量的堆(我曾经测量过它大约2.8GiB),我正试图找到一种方法来减少它的内存占用。我目前的计划是每隔一段时间强制执行一次垃圾收集,但我想知道这是否是个好主意。我读过HowtoforcegarbagecollectioninJava?和CanIForceGarbageCollectioninJava?并理解如何去做-只需调用(System/gc)-但我不知道这是否是个好主意,甚至不知道它是否需要。程序的工作原理如下。我有大量旧格式的文档,我正试图将其转换为HTML。遗留格式由多个XML文件组成:一个描述文档的元数据文件,并包含指向任意数量的内

java - 变量在 catch block 后立即被垃圾收集

我可以从垃圾收集器中看到这种奇怪的行为publicclassA{publicstaticvoidmain(String[]args){Stringfoo;try{foo="bar";intyoo=5;//1}catch(Exceptione){}intfoobar=3;//2}}如果我去调试并在//1foo不是null并且它的值为“bar”但在断点处放置断点//2foo是null,这在调试时可能很难理解。我的问题是是否有任何规范说明这是垃圾收集器的合法行为有了这个小变化,它就不会收集垃圾:publicclassA{publicstaticvoidmain(String[]args){S

java - Stream.sorted() 然后收集,还是收集然后 List.sort()?

这个问题在这里已经有了答案:Whatismoreefficient:sortedstreamorsortingalist?(3个答案)关闭4年前。总的来说,这两段代码在性能上有区别吗?Listlist1=someStream1.sorted().collect(toList());//vs.Listlist2=someStream2.collect(toList());list2.sort(Comparator.naturalOrder())变体2显然令人讨厌,应该避免,但我很好奇Stream的主流(嘿,mainstream)实现是否内置了任何性能优化,从而提高了性能两者的区别。我想因

简单聊聊JVM中的几种垃圾收集算法

一、摘要在之前的文章中,我们介绍了对象的创建过程,以及运行期的相关优化手段。本文主要介绍对象回收的判定方式以及垃圾对象的回收算法等相关知识。下面我们一起来了解一下。二、对象回收判定方式当一个对象被创建时,虚拟机会优先分配到堆空间中,当对象不再被使用了,虚拟机会对其进行回收处理,以便释放内存空间,这个过程也被称为垃圾对象回收。那么如何找到对象是否可以进行回收呢?一般有两种方式。引用计数法可达性分析法下面我们一起来了解下相关知识。2.1、引用计数法这个方法的实现思路是:在对象中维护一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。当对象的计数器值为0,表示这个对

HarmonyOS开源软件Notice收集策略说明

开源软件Notice是与项目开源相关的文件,收集这些文件的目的是为了符合开源的规范。收集目标只收集打包到镜像里面的模块对应的License;不打包的都不收集,比如构建过程使用的工具(如clang、python、ninja等)都是不收集的。静态库本身是不会被打包的,一般是作为动态库或者可执行程序的一部分被打包到系统中的,为了确保完备,静态库的都会收集。最终合并的NOTICE.txt要体现出镜像中每个文件都是用了哪些License,模块和License要有对应关系。最终合并的NOTICE.txt文件在/system/etc/目录下。收集规则按照优先级收集License,以下由1到4,优先级依次降低

Vector + ClickHouse 收集日志

目前业界的日志生态,最常用的是ELK,其次就是ClickHouse,本文会演示如何使用Vector+ClickHouse来采集Nginx日志并做清洗,最终写入ClickHouse。至于日志的可视化,后面再单独介绍,后面夜莺会把日志可视化能力下放到开源版本,之前跟映客的兄弟们交流准备一起搞,可惜迟迟没有抽出时间。别急,会有的,本文先把前半段完成,即日志的收集+传输+清洗+存储。存储显然是ClickHouse,前面三个环节,使用Vector来完成。之前有一篇文章对Vector做过简单介绍,大家可以参考:《可观测性数据收集集大成者:Vector》。配置Nginxlog我们可以直接采集默认的Nginx

java - 垃圾收集和异步调用/ future 对象

下面是一个利用Future接口(interface)进行异步调用的示例代码。我需要对get()方法进行一些说明。Futurefuture=getAsyncString();//dosomething...Stringmsg="";if(validation)return;elsemsg=future.get();//dosomethingelse...return;future变量是在方法中初始化的,所以该变量在方法执行后很快就会被GC清除,因为它不再被使用。那么如果代码进入if语句,JVM会是什么状态?如果没有人要读回它,JVM将如何处理包装的结果?它会影响ThreadPool或线程

java - 为什么 OpenJDK 11 Java 垃圾收集器*减少*此示例程序中的可用内存?

当我使用OpenJDK11(Windows10上的Zulu发行版)编译并运行以下非常简单的Java程序时:publicclassGCTest{publicstaticvoidmain(String[]args){System.out.println("Freememorybeforegarbagecollection:"+Runtime.getRuntime().freeMemory());Runtime.getRuntime().gc();System.out.println("Freememoryaftergarbagecollection:"+Runtime.getRuntime