首页
首页
沸点
课程
直播
活动
竞赛
商城
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虚拟机是一个比较枯燥无味的过程,刚开始基本是看不懂学不懂,然后就是似懂非懂,最后觉得好像懂了一些,到后来又觉得还是没懂,反正就是懵懵懂懂,过目就忘,一问就卡住,说也说不清,其实说的就是我自己。 我觉得在学习了相关理论知识之后,除了进行实操之外,通过提问和回答的方式,也…