关键词:java字节码、java类加载机制、jvm内存模型、jvm垃圾回收机制
ZERO
持续更新 请关注:https://zorkelvll.cn/blogs/zorkelvll/articles/2018/11/18/1542542925949
一、JVM
所谓**JVM**,即**一种**对操作系统和硬件平台进行抽象的**软件**,可以**执行java二进制字节码**的程序,**通过将**每一条**java字节码**指令翻译成不同平台**机器码**,达到在特定平台运行java字节码程序的目的。
其中,java字节码即由java编译器编译java程序得到的二进制class文件程序!
二、JVM漫谈
1、**既然要执行二进制字节码.class程序**,那么JVM肯定首先需要的是**读取**这些class文件吧,也就是第一个点**java类的加载机制**,涉及到的点有:****类的装载、****类生命周期、类加载过程、****类装载器、双亲委派模型****等
2、既然是1中已经读取了.class文件中的二进制数据,那么JVM总归是要提供内存空间去存储这些二进制数据吧,也就是第二个点JVM内存模型,涉及到的点有:****程序计数器、java虚拟机栈、本地方法栈、静态方法区、堆区****等
3、既然有内存存储二进制数据(方法区)和Class对象(堆),那么JVM肯定是需要对这些使用或未使用的内存空间进行管理的,也就是JVM垃圾回收机制,涉及到的点有:对象存活判断(引用计数法、可达性分析法)、垃圾收集算法(标记-清除算法、复制算法、标记-压缩算法、分代收集算法)、垃圾收集器等
4、既然涉及到对内存空间(方法区和堆)的管理,那么一定就有对相关内存空间参数大小的设置操作,也即所谓的jvm调优,涉及到的点有:相关监控和故障处理命令(jps jstat jmap jhat jstack jinfo)、相关监控调优工具(jconsole.exe、jvisualvm.exe,MAT(Memory Analyzer Tool)、GChisto)
三、JVM相关疑问??
1、垃圾收集器执行垃圾回收频率什么样的一个范围算是正常,或者多什么样的频率算是过度频繁而需要调整堆空间大小的,或者说根据什么样的业务场景具体的例子呢?
网友评论