• Home
  • Archives
  • 随笔
所有文章 友链 关于我

  • Home
  • Archives
  • 随笔

jvm学习笔记之一

发布于: 2018-12-19
更新于: 今天

JVM

Java Virtual Machine,用户只需生成在java虚拟机上运行的代码,即可在多个平台上的虚拟机上运行(一次编译,到处运行)
这也是借助了class字节码文件的格式实现的

Class

对应唯一的类or接口,但类和接口不一定要通过文件来生成,可以通过class loader生成

class格式

大致由无符号数、表以及前置的容量计数器和数据项集合组成

class具体内容

  • (前8字节)商标+版本号

    • (前4字节)Magic Num

      标记类型,第一次身份验证CAFEBABAY(这也是为什么java也叫做咖啡☕的原因)

    • (后4字节)Java version Num

      次版本+主版本
      eg: 00 00 00 2D 后面的002D=45,对应于主办本JDK1.1。这也是一种保护,防止不匹配的版本代码被执行

  • 常量池(存放data)

    u2的常量池容量计数值(CONSTANT_POOL_COUNT)从1开始计算,0用作指向常量池的索引,同时也是只有这个是从1开始计算的

    • 字面量【literal】

      第一位为u1的标志位(标记为什么常量类型,属于CONSTANT_UTF8_info)

    • 符号引用【Symbolic Reference】
      • 类、接口全限定名【Fully Qualified Name】
      • 字段名称、描述符【Descriptor】
      • 方法名称、描述符

初始化

类初始化与不初始化情况

类初始化

jvm学习笔记之一
/archives/84c762/
作者
tyrantqiao
发布于
2018-12-19
更新于
2024-06-30
许可协议
CC BY-NC-SA 4.0
赏

蟹蟹大佬的打赏,大家一起进步

支付宝
微信
  • java
  • 学习笔记
  • jvm

扫一扫,分享到微信

微信分享二维码
年度展望
Java面试题测试,你掌握了吗
© 2024 tyrantqiao 本站总访问量次 本站访客数人次 载入天数...载入时分秒...
  • 所有文章
  • 友链
  • 关于我

tag:

  • 复盘
  • 我
  • 规划
  • java
  • 面试
  • 源码
  • 架构
  • Hadoop
  • HTTP
  • TCP
  • 学习笔记
  • IDEA
  • maven
  • idea
  • Java
  • jdk
  • 面经
  • linux
  • 爱情
  • mysql
  • 性能
  • sql
  • Mysql
  • JAVA
  • 技术
  • Redis
  • MQ
  • Spring
  • 数据库
  • TIDB
  • spring
  • unity
  • chatgpt
  • 经验分享
  • 前端
  • redis
  • vue
  • git
  • shadowsocks
  • hexo
  • blog
  • bug
  • 开发
  • 业务
  • jvm
  • 算法
  • MySQL
  • nginx
  • Linux
  • mq
  • db
  • springCloud
  • ssh
  • python
  • 爬虫
  • test
  • vim
  • 影视剧
  • 中间件
  • 事务
  • 性格
  • 音乐
  • 程序员
  • 随笔
  • mybatis
  • 演讲
  • 域名
  • 猫咪
  • 她
  • github
  • 计划
  • 旅游
  • 软件
  • 心理
  • 情商
  • 幽默
  • 才艺
  • 穿搭
  • 编程
  • 排序
  • 查找
  • 缓存
  • 网络
  • 设计模式
  • c
  • 课程设计
  • centos
  • 数学
  • 本网站主题yilia设计者的主页
如果有问题或者想讨论的可以联系[email protected]或者[email protected]