
粗谈Java虚拟机
文章平均质量分 97
概念性的学习JVM。
sinat_35938012
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
粗谈Java虚拟机5_垃圾回收
分代垃圾收集 堆中大部分的对象都是 朝生即死,典型的场景:在函数执行过程中产生的对象,在函数执行结束后,没有再被使用(引用)的对象已经没有任何的存在价值。为此,分代GC将堆内存进一步的划分为新生代和老生代两大块,从名字上就很好理解,新创建的对象必然是放在新生代,当新生代中的对象达到一定的年龄后便迁移到老年代,年龄随着每躲过一次GC便增长一岁。新生代中又划分出 1块Eden区、2块Survivo...原创 2019-08-08 00:11:10 · 204 阅读 · 0 评论 -
粗谈Java虚拟机4_执行引擎
栈帧 Java虚拟机栈 是程序执行所必须的数据结构,每个Java线程都有一个JVM栈, JVM栈中以栈帧为存储单元,栈帧中存储执行方法必要的局部表量表、操作数栈、动态链接、方法返回值等信息。每次调用方法都会创建一个新的栈帧,方法执行结束或退出,栈帧即消亡。JVM栈结构如下∶以下面代码为例,来分析栈帧的结构:public static int add(){ int a = 1; in...原创 2019-08-04 14:12:13 · 232 阅读 · 0 评论 -
粗谈Java虚拟机3_类加载机制
加载类目的是为了使用,换作说使用类前,必须先加载该类。这点不难理解,一开始.class文件还静静的躺在磁盘里,而程序运行要在内存当中。读完上篇分析 class文件 的文章,照猫画虎手写 class字节流 还真能做到,真的是可以为所欲为,直接使用会带来很大的安全问题。所以由磁盘到内存只是第一步,到真真可以使用,还需要进行各种验证,准备等步骤,这一整套下来就是类加载机制,明白这一点,学习起来就容...原创 2019-08-02 00:06:37 · 229 阅读 · 0 评论 -
粗谈Java虚拟机2_Class文件分析
1. 前言class文件作为 JVM 的可执行文件,在可读性方面比 C语言 等直接编译成平台可执行文件的语言强太多,反编译class文件往往能够得到不错的效果。而一个类无论代码的多少,在结构上都大同小异。在源码级,类的结构由上而下大致为:当前类的包名路径、引用类的包名路径、当前类的信息(类名、父类、接口)、变量、方法、内部类/内部接口/枚举/注解等。Javac编译器也按照该顺序来编译源码。...原创 2019-07-30 16:26:16 · 400 阅读 · 0 评论 -
粗谈Java虚拟机1_开山篇
1. 前言 从学习Java的第一天开始,到如今工作当中,想必大家都耳闻目染了各种Java的优点。其中肯定少不了:Java有虚拟机,java是跨平台的,一次编译到处运行。在相当长的一段时间里对此观点都只是一个很模糊的概念,对自己写的代码也有一种吃不透的感觉。犹如一只拦路的大老虎,望而生畏,止步不前。一番思量,一日不解决掉,对技术难以有更深层次的理解,只好硬着头皮上。2. 不能跨平台的原因是怎...原创 2019-07-30 16:06:23 · 296 阅读 · 0 评论