
jvm
文章平均质量分 84
崔泡泡—猫
勤能补拙
展开
-
jvm垃圾回收机制
无需手动编码,但其内部配合引用队列使用,在垃圾回收时,终结器引用入队(被引用对象暂时没有被回收),再由 Finalizer 线程通过终结器引用找到被引用对象并调用它的 fifinalize方法,第二次 GC 时才能回收被引用对象。当内存不足时系统会逐步进行垃圾回收,第一次GC回收无用的新生代对象,第二次GC回收无用的老年代对象,第三次回收与第一次回收类似,第四次回收软引用的新年代和老年代对象,此时内存足够进行下一次操作,垃圾回收结束。可以看出垃圾回收时将先前声明为软引用的四个对象全部回收了。原创 2022-10-08 18:00:18 · 705 阅读 · 0 评论 -
java虚拟机中的双亲委派机制
电路交换虽然理论上可以用来传递网络信息但是需要占用资源的时间太长十分浪费资源。原创 2022-10-08 15:10:14 · 970 阅读 · 0 评论 -
类加载过程
初始化子类静态B之前先初始化父类静态A。原创 2022-09-09 17:41:41 · 357 阅读 · 0 评论 -
jvm中的类加载器
在Java的日常应用程序开发中,类的加载几乎是由上述3种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。隔离加载类修改类加载的方式扩展加载源防止源码泄漏开发人员可以通过继承抽象类java.lang.classLoader类的方式,实现自己的类加载器,以满足一些特殊的需求。原创 2022-09-09 17:14:55 · 618 阅读 · 0 评论 -
java中字符串常量池
首先我们需要理解并不是所有字符串对象创建后都会放入串池,比如用字符串对象动态拼接生成的字符串对象只会在堆中创建对象而不会将其放入串池中,如下列代码中字符串对象s就是由两个字符串对象拼接而成只会在堆中创建对象而不会将该对象进行串池操作。执行第二句s.intern时,因为字符串常量池事先没有存放对象"ab",所以将s的指向放到了字符串常量池中,当执行s == “ab"时会去字符串常量池中寻找对象"ab”,因为已经存储了s的地址,所以s == “ab”判断下列对象s3是否等于s4,s3又是否等于s5。原创 2022-09-08 14:41:34 · 649 阅读 · 0 评论 -
关于java中方法区和常量池
我们找到#2对应的常量池地址,发现其类型为Fieldref,说明其引用了其他的变量,后面的地址说明引用了#21,#22的地址(在常量池中应该是直接拼接出结果)由于元空间是存放在本地内存中大小几乎可以看做是物理内存的大小,所以想要看到元空间溢出需要通过idea在编译设置设置元空间大小。常量池是 *.class 文件中的,当该类被加载,它的常量池信息就会放入运行时常量池,并把里面的。在jdk1.8以前,方法区的位置在堆内存中的一部分叫做永久代,1.8后将堆中方法区移除改用。原创 2022-09-08 14:39:50 · 529 阅读 · 0 评论