关键词: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、垃圾收集器执行垃圾回收频率什么样的一个范围算是正常,或者多什么样的频率算是过度频繁而需要调整堆空间大小的,或者说根据什么样的业务场景具体的例子呢?
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于