jvm
文章平均质量分 75
干了这杯柠檬多
运气是实力的一部分,但我运气向来不好,所以只能靠实力去弥补!
展开
-
caffeine框架 W-TinyLFU算法详解
最近刚产生的缓存项进入Window区,不会被淘汰;访问频率高的缓存项进入Protected区,也不会淘汰;通过这种机制,平衡了访问频率和访问时间新鲜程度两个维度因素,尽量将新鲜的和访问频率高的缓存项保留在缓存中。原创 2022-10-19 18:00:23 · 2129 阅读 · 1 评论 -
垃圾回收器-G1垃圾回收器详解
1.G1不同于传统的cms等垃圾回收器,没有连续的年轻代和年老代,而是将jvm堆划分为了多个大小相等的区域。默认是2048块(XX:G1HeapRegionSize参数指定每块大小,必须是2次幂),每块大小为jvm堆内存/区域数量。2.G1初始年轻代是占堆内存5%(-XX:G1NewSizePercent设置新生代初始占比),会随着系统运行变化增多(区域会在年轻代和年老老代变化),但不会超过60%(-XX:G1MaxNewSizePercent设置年轻代最大占比)。g1的Eden区同其他gc,默认都是8原创 2022-08-21 17:39:13 · 2161 阅读 · 0 评论 -
垃圾回收器-CMS及常用回收器分析
1.cms、g1和zgc其实原理差不多2.cms标记整理时,会扫描直接引用对象 如 new A();但不去扫描a里面的其他引用对象3.为什么csm初始标记时要stw,不停一直有新增标记不完4..jvm在3g以上才适合cms5.在cms并发标记的时候会出现初始标记的对象发生了改变,这时就需要进行重新标记(采用三色标记增量算法)。重新标记后,进入到并发清理阶段(在该阶段如果来了一个不需要清理但无标记的对象,会不会被误删?...原创 2022-08-07 15:38:58 · 1452 阅读 · 0 评论 -
java堆栈方法区里都存了什么
首先JDK1.7和1.8是不同的。先说JDK1.7:栈:基本类型的对象和类的引用变量,局部变量。堆:对象,成员变量方法区:静态变量,字符串常量池,类信息,运行时常量池再说JDK1.8:栈:基本类型的对象和类的引用变量,局部变量。堆:对象,成员变量,静态变量,字符串常量池方法区:类信息,运行时常量池...原创 2021-01-11 20:34:59 · 1560 阅读 · 1 评论 -
深度解析String s=“1“生成几个对象系列问题
JVM中的常量池说字符串之前要说一下jvm中的常量池,JVM中常量池有三个:1.运行时常量池 (常说的常量池,HSDB可以看到,InstanceKlass的一个属性 ConstantPool* _constants; 存在方法区(jdk1.8元空间))2.字符串常量池 (String pool 存在堆中)3.class文件中的常量池 (Constant pool , javap -v 可以看到, 存在硬盘上)该篇重点看字符串常量池,先看一下字符串常量池的结构:即String Pool原创 2021-01-06 17:11:51 · 894 阅读 · 0 评论 -
双亲委派机制及打破双亲委派示例
双亲委派机制在加载类的时候,会一级一级向上委托,判断是否已经加载,从自定义类加载器-》应用类加载器-》扩展类加载器-》启动类加载器,如果到最后都没有加载这个类,则回去加载自己的类。双亲委托有个弊端:不能向下委派,不能不委派怎么打破双亲委派机制:(也就是能向下委派和不委派)自定义类加载器(不委派)spi机制(向下委派)打破双亲委派打破双亲委派的两种方式:1.通过spi机制,使用ServiceLoader.load去加载2.通过自定义类加载器,继承classloade原创 2021-01-01 20:22:03 · 4930 阅读 · 1 评论 -
JVM类结构及加载过程
Java的每个类,在JVM中,都有一个对应的Klass类实例与之对应,存储类的元信息如:常量池、属性信息、方法信息。jvm中类结构klass InstanceKlass java类(非数组)普通的Java类在JVM中对应的是instanceKlass类的实例 InstanceMirrorKlass 用于表示java.lang.Class,Java代码中获取到的Class对象,实际上就是这个C++类的实例,存储在堆区,学名镜像类...原创 2020-12-30 14:43:26 · 292 阅读 · 3 评论 -
如何使用HSDB及sawindbg.dll问题解决
如何使用HSDB?进入到jdk的lib文件夹下 ,打开cmd,执行命令 java -cp sa-jdi.jar sun.jvm.hotspot.HSDB,会打开一个HSDB的图形化界面。跑一个不会停的项目,在idea终端使用jps命令找出端口号,1272就是我现在跑的项目打开HSDB ,file-》attach ,输入1272端口号确认。报错:Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: Can't load原创 2020-12-30 10:23:38 · 1080 阅读 · 0 评论