- 博客(11)
- 收藏
- 关注
原创 jvm之虚拟机字节码执行引擎(六)
虚拟机字节码执行引擎运行时栈帧结构• 局部变量表• 操作数栈• 动态链接• 方法返回地址• 附加信息局部变量表• slot 32 64• 数据类型:byte boolean short char int float double long reference(ccs) returnAddress• slot 复用:当一个变量的pc寄存器的值大于Slot的作用域的时候,Slot可以复用/** * 局部变量表 复用slot * -verbose:gc */public cla
2020-06-26 18:40:41
151
原创 jvm之类加载机制(五)
类加载机制虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、解析、和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制懒加载类加载生命周期:加载加载源:• 文件 class 文件 Jar文件• 网络• 计算生成二进制流• 数据库• 其他文件生成 jsp验证验证是连接阶段的第一步,这一阶段的目的是确保Class文件的字节流中包含的信息符合《Java虚拟机规范》的全部约束要求,保证这些信息被当作代码运行后不会危害虚拟机自身的安全。准备准备阶
2020-06-26 18:38:19
102
原创 jvm之类文件详解(四)
第三节 类文件详解类文件介绍Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件之中,中间没有添加任何分隔符,这使得整个 Class 文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用 8 位字节以上空间的数据项时,则会按照高位在前(Big-Endian)的方式分割成若干个 8 位字节进行存储。Class 文件只有两种数据类型:无符号数和表链接:https://docs.oracle.com/javase/spe
2020-06-26 18:34:06
110
原创 jvm之虚拟机工具篇(三)
虚拟机工具jps(java process status) 虚拟机进程状况工具jps -l 主类全名jps -m 运行传入主类的参数jps -v 虚拟机参数jstat(JVM Statistics Monitoring Tool) 虚拟机统计信息监视工具类加载,内存,垃圾收集,jit编译信息、https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.htmlE 代表eden区 o代表old区 m代
2020-06-26 00:33:13
54
原创 jvm之垃圾回收篇(二)
垃圾回收如何判断对象为垃圾对象引用计数法在对象中添加一个引用计数 器,当有地方引用这个对象的时候,计数器+1,当失效的时候,计数器-1引用计数法无法解决循环引用问题证明没有用引用计数法:/** * 循环引用 */public class RefCountGC { public Object instance = null; private byte[] bigSize = new byte[2*1024*1024]; public static void
2020-06-25 02:15:46
105
原创 jvm之虚拟机内存的各个区域(一)
全局图jvm介绍jvm位置:jvm体系结构:类加载器类加载器负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定 Execution Engine执行引擎负责解释命令,提交操作系统执行虚拟机自带的加载器:• 启动类加载器(Bootstrap)C++• 扩展类加载器(Extension)Java• 应用程序类加载器(AppClassLoader)java 也
2020-06-21 21:18:18
99
转载 pageHelper分页失效
原因是 PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的。只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象。原文:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.mdhttps://segment
2020-06-17 17:40:35
80
原创 并发编程
多线程线程的应用实现callable接口继承Thread类Request请求类:public class Request { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public Str
2020-06-07 22:47:16
57
原创 使用zookeeper原生api实现分布式锁
使用zookeeper原生api实现分布式锁zookeeper实现分布式锁一种是所有节点都监听最小节点 当最小节点删除后 其他节点创建临时节点 谁创建成功 就意味获取到锁 如果客户端太多 服务端删除一个节点 服务端短时间向其他所有客户端发送大量通知 这就是羊群效应另一种思路就是创建临时有序节点 当前节点监听比他小的节点中的最大节点当 这个节点删除后触发监控事件 当前节点就是最小节点了 即获取到了锁 避免了羊群效应DistributeLock类package lock;import org.
2020-06-03 00:22:57
95
空空如也
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝