
Jvm原理及应用
文章平均质量分 69
我本身是大数据工程师,兜兜转转研究过很多东西,基础的就是最难的,对于Jvm的认知加深,对于基础架构不断贯通,如何提高性能,具有呼吸感,不断重构,不断认知,深入到编程语言生态中,明白工程的瓶颈在何方,基于这个动机下,想花费几个月的时间,写下这个专栏,挑战下自己。
李孟聊人工智能
独立开发,Substack和Medium顶级编辑
展开
-
类文件结构
一.简介实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不和包括Java在内任何语言绑定,它只与Class文件这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。Clojure(Lisp 语言的一种方言)、Groovy、Scala 等语言都是运行在 Java 虚拟机之上。下图展示了不同的语言被不同的编译器编译成.class文件最终运行在 Java 虚拟机之上。可以说.class文件是不同的语言在 Java 虚拟机之间的重要桥梁,同时原创 2020-06-13 14:18:20 · 773 阅读 · 0 评论 -
jvm系列--类加载器
一.class装载验证流程1.加载装载类的一个阶段取得类的二进制流转为方法区数据结构在java堆中生成对应的java.lang.Class对象2.链接验证:目的:保证Class流的格式正确。文件格式的验证:是否以0xCAFEBABE开头。版本号是否合理。元数据验证:是否有父类,继承了final类,非抽象类实现了所有的抽象方法。字节码验证(很复杂): 运行...原创 2018-07-19 11:39:34 · 891 阅读 · 0 评论 -
jvm系列--堆分析
一.MAT简介MAT是分析工具,安装略。二.配置出现oom导出dump文件,分析报告三.堆分析1.OOM(内存溢出)原因:StackOverFlow 栈 ,Stack属于栈的区域,属于每条线程私有的HeapOutOfMemory 堆ConstantOutOfMemory 常量池DirectMemoryOutOfmemory 本地内存2.堆溢出p...原创 2018-07-19 11:00:00 · 999 阅读 · 0 评论 -
jvm系列--锁
一.简介使用锁,维护计数器的串行访问与安全性。二.对象头Mark对象头的标记,32位。描述对象的hash、锁信息、垃圾回收标记,年龄:指向锁记录的指针指向monitor的指针GC标记偏向锁线程ID三.偏向锁大部分情况没有竞争,所以可以通过偏向来提高性能。所谓的偏向,就是偏心,即锁会偏向于当前已经占有锁的线程。将对象头Mark的标记设置为偏向,并将线程I...原创 2018-07-19 11:53:02 · 1001 阅读 · 0 评论 -
jvm系列--监控工具
在linux环境下一.uptime系统时间,运行时间连接数:每一个终端算一个连接1,5,15分钟内的系统平均负载运行队列中的平均进程数二.vmstat可以统计系统的CPU,内存,swap,io等情况vmstat 1 4三.topcpu内存每个进程占CPU情况四.pidstat监控CPU,IO,内存-p 指定进程 –u 监...原创 2018-07-19 11:19:59 · 6124 阅读 · 0 评论 -
jvm系列--GC
一.运行时数据区域1.Heap Area存储的全都是Object对象实例,对象实例中一般都包含了其数据成员以及与该对象对应Class信息; 一个JVM实例在运行的时候只有一个Heap区域,该区域被所有的线程共享;2.Method Area方法区域又名静态成员区域,包含整个程序Class,static成员等; 方法区被所有线程共享3.Stack AreaSt...原创 2018-07-08 16:22:20 · 1020 阅读 · 0 评论 -
Jvm原理及应用-目录
一.基本原理类文件结构JVM垃圾回收二.高效编译三.代码优化持续更新原创 2020-05-03 20:25:43 · 348 阅读 · 0 评论 -
JVM垃圾回收
一.简介最近又复习下jvm相关内容,理解下思想,吸收下前辈经验,本文jdk 1.7/1.8二.引用计数法与可达性分析垃圾回收,便是将已经分配出去的的,但却不再使用的内存回收回来,以便能够再次分配。在Java虚拟机的语境下,垃圾指的是死亡对象所占据的堆空间。这里便涉及了一个关键问题:如何辨别一个对象死亡。2.1 引用计数法给个对象添加引用计数器,每当有一个地方引用它,计数器值就加1;当引用...原创 2020-03-07 10:09:17 · 722 阅读 · 0 评论