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线程清理掉

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI天任

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值