随笔分类 -  jvm

jvm相关知识
摘要:一.字符串常量池存放的地方 字符串常量池:在jdk1.6时,它存在于永久代 jdk1.7之后: 怎么验证:思路,我们只要不断的创建字符串对象,让其内存溢出,看看报错是在哪一块内存中即可 /** * jdk6:‐Xms6M ‐Xmx6M ‐XX:PermSize=6M ‐XX:MaxPermSize= 阅读全文
posted @ 2022-01-03 11:57 yangxiaohui227 阅读(133) 评论(0) 推荐(0) 编辑
摘要:1.jps 查询当前服务器启动了哪些java项目 2.jmap -histo 16332>./histo.log 3.jmap -heap 16632查询堆的信息 4.jmap ‐dump:format=b,file=kk.hprof 16332 堆栈导出, 线上环境可以设置内存溢出时自动导出堆信息 阅读全文
posted @ 2021-12-29 16:42 yangxiaohui227 阅读(243) 评论(0) 推荐(1) 编辑
摘要:总体概览: 1.吞吐量和低延迟的关系 吞吐量=用户线程的时间/(用户线程的时间+GC的时间),从公式可以看出,GC的总时间越小,吞吐量越大 低延迟:指的是每次GC的停顿时间,停顿越短,延迟越低,用户感觉就越不卡 举个例子:假如只有2个线程,垃圾收集分为2个阶段:标记阶段+清除阶段 方案1:现在这2个 阅读全文
posted @ 2021-12-29 10:38 yangxiaohui227 阅读(80) 评论(0) 推荐(0) 编辑
摘要:1.内存模式概览: 2.主要参数设置: 堆:初始化堆内存-Xms 最大堆内存 -Xmx 新生代:-Xmn 如:Xmx2048M 元空间:元空间使用的是直接内存,默认大小是21M,超过该值会触发FullGC,同时会扩容,因此为了启动时,更快,需要设置该值: - XX:MaxMetaspaceSize 阅读全文
posted @ 2021-12-27 17:00 yangxiaohui227 阅读(139) 评论(0) 推荐(0) 编辑
摘要:在了解volatile的原理前,我们先来看个示例代码: public class Visualable { public static boolean initFlag=false; public static void main(String[] args) throws InterruptedE 阅读全文
posted @ 2021-11-04 18:17 yangxiaohui227 阅读(339) 评论(0) 推荐(0) 编辑
摘要:事先创建一个java类,如下: 执行命令后获得字节码文件内容: 本次需要分析的字节码内容如下: java虚拟机栈和栈帧关系图: 栈帧的组成:局部变量表,操作数栈,动态链接,方法出口 由字节码文件可以看到,栈深度为2(stack=2)说明操作数栈的深度是2,本地变量表变量长度为5因此过程分析如下: 0 阅读全文
posted @ 2019-10-23 10:34 yangxiaohui227 阅读(576) 评论(0) 推荐(0) 编辑
摘要://环境的搭建: 1.创建一个类并编译它 2.使用java命令:javap -c -verbose build/classes/java/main/com/yang/jvm/Test.class 将16进制的字节码文件转成可视化的文件内容如下: 具体内容如下: 此外:idea也有插件可以得到上面的字 阅读全文
posted @ 2019-10-17 11:27 yangxiaohui227 阅读(694) 评论(0) 推荐(0) 编辑
摘要:package com.yang.jvm; import sun.net.spi.nameservice.dns.DNSNameService; public class Test { public static void main(String[] args) throws ClassNotFou 阅读全文
posted @ 2019-09-25 10:22 yangxiaohui227 阅读(201) 评论(0) 推荐(0) 编辑
摘要:类的加载-连接-初始化过程都是在程序运行期间完成的,过程如下: 加载阶段: 连接阶段: jdk自带的JVM监控管理软件:通过在控制台输入命令jconsole 或者jvisualvm可以打开监控界面: jvisualvm同理执行:其功能更加强大 阅读全文
posted @ 2019-09-20 14:01 yangxiaohui227 阅读(266) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示