首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
JVM
订阅
jsam
更多收藏集
微信扫码分享
微信
新浪微博
QQ
14篇文章 · 0订阅
Java Class文件结构实例分析(下)
上节我们分析到字段部分,字段的完整地址范围:000000E1~000000EA。 跟在字段后面的是方法,下面继续分析。 说明当前类有2个方法。 查表得到对应的访问标志为ACC_PUBLIC。 对应常量池中的第7项常量,值为<init>,即实例初始化方法。 对应常量池中的第8项常…
JVM指令分析实例五(操作数栈)
本篇为《JVM指令分析实例》的第五篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。 局部变量表的容量以变量槽(Variable Slot)为最小单位,虚拟机规范中并没有明确指明一个Slot应占用的内存空间大小。 每个Slot能存放一个bo…
JVM指令分析实例四(数组、switch)
本篇为《JVM指令分析实例》的第四篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。 创建一个指定原始类型(如int、float、char等)的数组,并将其引用值压入栈顶。 执行该指令后,将从操作数栈出栈1个参数count,类型为int,表…
JVM之压缩指针(CompressedOops)
对于32位机器,进程能使用的最大内存是4G。如果进程需要使用更多的内存,需要使用64位机器。 对于Java进程,在oop只有32位时,只能引用4G内存。因此,如果需要使用更大的堆内存,需要部署64位JVM。这样,oop为64位,可引用的堆内存就更大了。 注:oop(ordina…
Java之CMS GC的7个阶段
CMS收集器的主要设计目标是:低应用停顿时间。它通过两种方式实现这一目标: 不压缩老年代,而是使用空闲列表来管理回收空间。 大部分标记清理工作与应用程序并发执行。 主要问题:由于不压缩带来的老年代堆碎片,或者在对象分配率高的情况下,都可能导致Full GC。 CMS收集器的GC…
Java Class文件结构实例分析(上)
本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。 将0x0034转换为十进制,计算得到52,对应版本号为JDK 1.8。 将0x0016转换为十进制,计算得到22。由于容量计数是从1开始(如果没有特殊情况,通常都是从0开始),因此常量池…
JVM指令分析实例二(算术运算、常量池、控制结构)
相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。 Java虚拟机通常基于操作数栈进行算术运算。只有iinc指令例外,它直接对局部变量进行自增操作。 以上指令,并没有出现取反的指令操作。因为JVM并没有提供取反指令,而是使用异或指令来实现取反。…
Java虚拟机系列文章汇总
JVM指令分析实例JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)JVM指令分析实例四(数组、switch)
JVM之卡表(Card Table)
我们知道,JVM在进行垃圾收集时,需要先标记所有可达对象,然后再清除不可达对象,释放内存空间。那么,如何快速的找到所有可达对象呢? 最简单粗暴的实现,就是每次进行垃圾收集时,都对整个堆中的所有对象进行扫描,找到所有存活对象。逻辑是简单,但性能比较差。 简单粗暴的实现方式,通常都…
32个问题,学习Java虚拟机的运行时数据区
学习JVM虚拟机是一个比较枯燥无味的过程,刚开始基本是看不懂学不懂,然后就是似懂非懂,最后觉得好像懂了一些,到后来又觉得还是没懂,反正就是懵懵懂懂,过目就忘,一问就卡住,说也说不清,其实说的就是我自己。 我觉得在学习了相关理论知识之后,除了进行实操之外,通过提问和回答的方式,也…