当前位置:   article > 正文

JDK、JRE、JVM之间的区别,⼀个对象从加载到JVM再到被GC清除经历的过程

JDK、JRE、JVM之间的区别,⼀个对象从加载到JVM再到被GC清除经历的过程

 JDK、JRE、JVM之间的区别

  • JDK(Java SE Development Kit),Java标准开发包,它提供了编译、运⾏Java程序所需的各种⼯具 和资源,包括Java编译器、Java运⾏时环境,以及常⽤的Java类库等
  • JRE( Java Runtime Environment) ,Java运⾏环境,⽤于运⾏Java的字节码⽂件。JRE中包括了 JVM以及JVM⼯作所需要的类库,普通⽤户⽽只需要安装JRE来运⾏Java程序,⽽程序开发者必须 安装JDK来编译、调试程序。
  • JVM(Java Virtual Machine),Java虚拟机,是JRE的⼀部分,它是整个java实现跨平台的最核⼼的 部分,负责运⾏字节码⽂件。

       我们写Java代码,⽤txt就可以写,但是写出来的Java代码,想要运⾏,需要先编译成字节码,那就需要 编译器,⽽JDK中就包含了编译器javac,编译之后的字节码,想要运⾏,就需要⼀个可以执⾏字节码的 程序,这个程序就是JVM(Java虚拟机),专⻔⽤来执⾏Java字节码的。 如果我们要开发Java程序,那就需要JDK,因为要编译Java源⽂件。

       如果我们只想运⾏已经编译好的Java字节码⽂件,也就是*.class⽂件,那么就只需要JRE。 JDK中包含了JRE,JRE中包含了JVM。

       另外,JVM在执⾏Java字节码时,需要把字节码解释为机器指令,⽽不同操作系统的机器指令是有可能 不⼀样的,所以就导致不同操作系统上的JVM是不⼀样的,所以我们在安装JDK时需要选择操作系统。 另外,JVM是⽤来执⾏Java字节码的,所以凡是某个代码编译之后是Java字节码,那就都能在JVM上运 ⾏,⽐如Apache Groovy, Scala and Kotlin 等等。

⼀个对象从加载到JVM,再到被GC清除,都经历了什么过程? 

 1. ⾸先把字节码⽂件内容加载到⽅法区

2. 然后再根据类信息在堆区创建对象

3. 对象⾸先会分配在堆区中年轻代的Eden区,经过⼀次Minor GC后,对象如果存活,就会进⼊ Suvivor区。在后续的每次Minor GC中,如果对象⼀直存活,就会在Suvivor区来回拷⻉,每移动 ⼀次,年龄加1

4. 当年龄超过15后,对象依然存活,对象就会进⼊⽼年代

5. 如果经过Full GC,被标记为垃圾对象,那么就会被GC线程清理掉

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/881383
推荐阅读
相关标签
  

闽ICP备14008679号