Java学习笔记一(JDK、JVM、JRE都是啥?)

本文介绍了Java开发工具包(JDK)、Java运行环境(JRE)及Java虚拟机(JVM)的基本概念及其相互关系,并详细解析了JVM的内存结构,包括方法区、堆和栈的作用及管理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚安装Java时,只是按照网上的步骤操作了一遍,也没有想了解一下具体的JDK JRE JVM都代表了啥

最近讲到这里,正好总结一下。

他们之间的关系可以简单理解为 JDK包含了JRE JRE包含了JVM

JDK - Java Development Kit 是 Java 语言的软件开发工具包(SDK),从JDK5.0后改名为SE,用来编译Java程序

         JRE+Java外部工具(javac.exe等)

JRE - Java Runtime Environment缩写,指Java运行环境,提供了很多现成的类

         JDK+Java核心类库

JVM - Java Virtual Mechine,指Java虚拟机,用来运行Java程序

一个程序的实现过程:Hello.java -> javac -> Hello.class -> JVM -> 输出: Hello World

                                    源文件  -> 编译器(javac) -> 字节码文件 -> 解释器 (java)-> 运行

字节码的执行分为 即时编译方式 和 解释执行方式

解释执行分为 装入 校验 执行


以及

JVM的内存结构

假如说JVM所管理的内存(假如:500M)时,主要分三大区域:
    (1)方法区:加载硬盘上的类文件,读进到方法区中。用来存储程序运行时所需要的类信息, 如String.class,静态方法等,常量池。
    (2)堆:所有引用类型的对象(实例)存储的位置,会给实例分配对应的空间
    (3)栈:是用来存储方法的参数以及方法内的局部变量
       其中栈有栈帧:
         在栈中,jvm会给每一个方法单独分配空间,这个空间用来存储此方法内的所有局部变量。当此方法运行结束后,栈帧消失(内存释放)。栈中的内存是自动管理的,入栈时分配,出栈时释放。
       相对而言,堆的内存是由垃圾回收机制管理的,当没有活跃变量(已加载的类变量和栈中的变量)指向某个堆内存时,对应的堆空间就会被释放。引用变量存储的是堆中对象的地址信息,当有很多指向对象的变量越来越多时,有可能造成内存溢出,需要清空变量的地址信息

      String str = "1111";

      str = null

     此时堆里的对象,没有任何引用,会被认为时垃圾,等待GC回收。

     垃圾回收机制:GC   不定时的检查堆里的对象,是否被变量所引用(判断方法:引用技术和对象引用遍历)。如果发现这个对象没有被引用,就会处理这个对象

     手工清空堆内存:System.gc();






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值