JVM虚拟机学习整理

目录

  1. 前序
  2. 源文件编译
  3. 类加载机制
  4. 运行时数据区
  5. 执行引擎
  6. 垃圾回收
  7. 性能调优工具
  8. 总结

  1. 前序

  最近学习java虚拟机,找到很多博文对JVM都有深入的讲解分析,在此做一个简单的整理。

  本文整理的思路主要围绕:JAVA程序开发完成之后,如何由.java转换成.class文件?class文件怎么被虚拟机加载?加载后放在虚拟机的什么位置?字节码怎么被虚拟机执行?执行过程中产生的垃圾怎么被虚拟机回收的?以及jvm的一些性能优化。

  java虚拟机内存结构如下图:

 

回到顶端


 2. 源文件编译

  开发人员编写的java代码(.java)通常都是通过静态编译器(javac)编译成字节码byteCode(.class)的。javac 主要作用在于将源码编译为字节码,同时做一些词法,语法,语义上的检查,最后生成可供jvm运行的字节码文件。详细学习博文:javac 实现原理JVM编译器的编译过程

回到顶端


  3. 类加载机制

  编译好的字节码文件,会由java虚拟机的类加载机制,负责加载到java虚拟机中。类加载机制如下:加载、链接(验证、准备、解析)、初始化。默认的加载双亲委派。详细学习博文深入理解JVM一加载机制

回到顶端


  4. 运行时数据区

  类加载器加载class文件,会把字节码载入方法区,并生成对应Class对象放在堆区,以供运行使用。java虚拟机将运行数据区分成:方法区、堆区、虚拟机栈、本地方法栈、程序计数器。方法区、堆区是所有线程共享的,其它是各自线程独有。详细学习博文:深入理解JVM 一内存

回到顶端


  5. 执行引擎

  执行字节码,深入理解JVM一字节码执行

回到顶端


  6. 垃圾回收

  垃圾回收主要是对方法区、堆区的空间进行回收。

  垃圾回收算法、垃圾回收器:深入理解JVM 一GC(上)深入理解JVM 一GC(下)深入理解GC ——MinorGC\MajorGC\FullGC触发JVM进行Full GC的情况及应对策略

回到顶端


   7. 性能调优工具

  

回到顶端


  8. 总结

  本文主要是对阅读相关博文的一个梳理,文中若有不当之处,还望不吝赐教,一起探讨,相互学习,共同进步。

 

回到顶端


   9. 经典文章

  Java Garbage Collection Basics

回到顶端

 

 

 

posted @ 2018-06-03 10:13  葛麻藤蔓  阅读(102)  评论(0编辑  收藏  举报