Class文件格式与加载
Class文件格式与加载 类文件结构 类文件结构也就是Class文件的结构 魔数:用于标识Class文件的版本 常量池:主要用于保存字面量(类似于字符串等) 和 符号引用(类和接口的全限定名\字段名称以及描述符\方法名称和描述符); 由于jvm在加载Class文件时才会进行动态连接,因此需要保存这些方法或接口的信息 访问标识:标识这个Class的类型(接口/类/public/abstract/...
Class文件格式与加载 类文件结构 类文件结构也就是Class文件的结构 魔数:用于标识Class文件的版本 常量池:主要用于保存字面量(类似于字符串等) 和 符号引用(类和接口的全限定名\字段名称以及描述符\方法名称和描述符); 由于jvm在加载Class文件时才会进行动态连接,因此需要保存这些方法或接口的信息 访问标识:标识这个Class的类型(接口/类/public/abstract/...
性能监控与故障处理工具 介绍处理jvm的相关问题办法以及相关工具的一个持续更新的集合 📚 经验 CPU占用率高 通过jvm工具排查 通过top命令查询进程号 通过top -Hp 查到线程号,转换成为16进制 通过jstack |grep 16进制线程号 -A 10 找到CPU当前执行的方法堆栈 通过arthas排查 thread # 查看线程状态(默认只显示10个线程) t...
垃圾回收器及算法基础 前提介绍 垃圾回收器(GC)的理论研究在很早直接就开始了,大概是在60年代lisp语言就开始使用内存分配和垃圾回收机制来管理程序的内存了,近现代这一方向也是保持着极高的研究热度,从G1->ZGC 算法基础 对内存空间的回收首先需要解决一个问题那些是需要进行回收的对象,针对这个问题有两种处理方案: 引用计数算法 引用计数是通过对对象被引用次数来标识是否有效,存在循环...
内存布局设计 JVM的内存设计上是划分为两个大的区域的启动时向操作系统分配的程序内存区域、直接对系统内存进行操作的区域,后者不属于JVM管理,我们主要是分析前者 大体结构 程序计数器 程序计数器是用来记录当前线程所执行的字节码的行号指示器,字节码解释器在工作时就是通过改变这个计数器的值来记录当前执行的指令. 它是JVM层次的指令执行记录与硬件层次的指令地址寄存器(IR)的区别在于程序计数器...
多线程是否会影响执行效率 前提 今天一位同事问了一个问题感觉比较有趣,问题简化规范后是这样的 在同一机器/操作系统上,使用n个线程处理X个任务是不是和使用n*m个线程处理X个任务效率相同? 这样的观点是基于RR-时间片轮转来进行推导的;我不太认同这种观点,直觉上认为参与处理的任务过多或过少都会影响执行效率;下面先进行这两种观点的推导然后在进行实际的验证 时间片轮转 假设前提: 操作系统对进程...
深入分布式缓存-从原理到实践(三) Redis数据结构 Redis的数据结构可以划分为下图所示: 可以看到Redis底层采用的也是Map的方式来保存key以及value; Redis主要的数据类型分为String、list、set、map、sorted-set等 下面会依次介绍这几种类型对象的底层实现原理 String类型 ...