![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
Dyson~
小小黑
展开
-
Java虚拟机 -- 类加载模块
Java平台无关性是如何实现的? 一次加载,到处执行,其实并不是Java语言实现了跨平台的特性,而是在任何的平台上都有JVM虚拟机,Java通过javac在编译时将.java文件生成字节码并存入到.class文件中,有了class文件才有了跨平台的基础,这样JVM才能解析,将字节码生成特定平台上的机器码 Java源码首先被编译成字节码,再有不同平台的JVM进行解析,Java语言在不同的平台上运...原创 2019-07-31 14:01:49 · 202 阅读 · 0 评论 -
Java虚拟机 -- JVM内存区域模块
JVM内存模型 -- JDK8 线程私有 程序计数器 当前线程所执行的字节码行号指示器 通过改变计数器的值来选取下一条需要执行的字节码指示器(比如:循环,跳转,异常处理都需要依赖该计数器来完成) 和线程是一对一的关系即“线程私有” 不会发生内存泄露问题,程序计数器是逻辑计数器而非物理计数器 虚拟机栈 生命周期与线程相同 每个方法在执行时都会创建一个栈帧,用于存...原创 2019-07-31 20:00:24 · 292 阅读 · 0 评论 -
Java虚拟机 -- 垃圾回收模块
垃圾回收机制 当对象被判为垃圾的标准,即没有被其他对象引用时,才会被收回。 判断对象为垃圾的方法 引用计数法: 通过判断对象的引用数量来决定对象是否可以被回收 每个对象实例都有一个引用计数器,被引用时+1,完成引用时-1 任何引用计数为0的对象都有可以被当做垃圾进行回收 优点:执行效率高,程序执行所受的影响比较小 缺点:如果存在循环引用就会导致出现内存泄漏,就比如:父对象对子对...原创 2019-08-01 11:21:27 · 348 阅读 · 0 评论 -
Java虚拟机 -- 垃圾收集器
介绍垃圾收集器之前先要了解三个知识点: Stop-the-World JVM由于要执行GC而停止应用程序的执行 任何一种GC算法中都会发生 多数GC优化通过减少Stop-the-world发生的时间来提高程序性能 Safepoint(安全点):程序执行时并非在所有的地方都能停顿下来开始GC,只有在到达安全点时才可以停止GC。 分析过程中对象引用关系不会发生变化的点 产生...原创 2019-08-01 15:55:40 · 345 阅读 · 0 评论