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

刚刚安装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


以及

JVM的内存结构

假如说JVM所管理的内存(假如:500M)时,主要分三大区域:
    (1)方法区:加载硬盘上的类文件,读进到方法区中。用来存储程序运行时所需要的类信息, 如String.class,静态方法等,常量池。
    (2)堆:所有引用类型的对象(实例)存储的位置,会给实例分配对应的空间
    (3)栈:是用来存储方法的参数以及方法内的局部变量
        其中栈有栈帧:

            在栈中,jvm会给每一个方法单独分配空间,这个空间用来存储此方法内的所有局部变量。当此方法运行结束后,栈帧小时(内存释放)

      引用变量存储的是堆中对象的地址信息,当有很多指向对象的变量越来越多时,有可能造成内存溢出,需要清空变量的地址信息

      String str = "1111";

      str = null

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

       垃圾回收机制:GC   不定时的检查堆里的对象,是否被变量所引用。如果发现这个对象没有被引用,就会处理这个对象
       手工清空堆内存:System.gc();




猜你喜欢

转载自blog.csdn.net/weixin_40373090/article/details/80557051
今日推荐