JVM、JRE和JDK的区别 及 环境变量的作用 什么是垃圾回收机制

JVM、JRE和JDK的区别 及 环境变量的作用 什么是垃圾回收机制

目录

JVM、JRE和JDK的区别

一、JVM

二、JRE

三、JDK

四、总结:

环境变量path和classpath的作用是什么?

JAVA语言的三种技术架构:

什么是java跨平台性?

GC是什么? 为什么要有GC?

一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?

垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?


JVM、JRE和JDK的区别

一、JVM

JVM(Java Virtual Machine),是java虚拟机。JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。对应的文件位于jdk以及jre目录下的bin\server中的jvm.dll。

JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写的程序。

二、JRE

JRE(Java Runtime Environment),是java的运行环境。包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器),但包含java运行程序(java.exe)。

三、JDK

JDK(Java Development Kit),是java的开发工具包。是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。在JDK的安装目录下,主要有以下的目录。

【1】bin,里面存放有我们熟知的java命令,可以被系统直接运行。要让cmd可直接运行这些exe可执行文件,我们需要为bin目录配置环境变量。

注意:用来编译java程序的javac.exe来自于jdk安装目录下的bin,而运行java程序用到的java.exe来自于jre安装目录下的bin中。客户想要使用java程序,总不能自己去配置环境变量吧,因此在安装jre时,自动为java.exe配置好了环境变量。

【2】lib,jvm工作时需要的核心类库,都被打成了jar存放在此目录里。

【3】jre,因此安装了jdk,就不需要再单独安装jre了。

四、总结:

作为预备程序员,自然是选择安装JDK,不需要再单独安装JRE了,并将Jdk安装目录下的bin目录路径添加到path中。而如果作为客户的话,只需要安装JRE就行了,不需要再配置环境变量,因为再安装JRE的时候,系统会自动配置。

环境变量path和classpath的作用是什么?

环境变量path和classpath的作用是什么?

1、PATH环境变量。

作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。

需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经可执行文件javac/java/javadoc等待,设置PATH变量后,就可以在任何目录下执行javac/java等工具了。

2、CLASSPATH环境变量。

作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。

需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。

新版的软件,classpath没有什么用了,因为在安装的时候已经选了JDK而且可以添加

补充:JAVA_HOME环境变量。

它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

JAVA语言的三种技术架构:

JAVAEE (企业版): 企业环境下开发应用程序,servlet,jsp,针对web应用程序的开发。

JAVASE(标准版):普通简单的桌面应用程序,商务应用程序。(java版扫雷)

JAVAME(小型版):手机应用软件,电子消费产品或者嵌入式设备提供支持,(使用android,开发,用不到java,android提供的方法更简单)
 

什么是java跨平台性?

   
         通过java编写的应用程序在不同的系统平台上都可以运行
         只要在需要运行java程序的操作系统上,先安装一个java虚拟机,由JVM来负责Java程序在该系统中的运行。

如图:

JVM、JRE和JDK的区别 及 环境变量的作用 什么是垃圾回收机制

GC是什么? 为什么要有GC?

GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,

忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动

监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存

的显示操作方法

一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?

 

可以!一个“ java”源文件里面可以包含多个类,类名必须和文件名一致。

 

垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

 

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用

有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是”可达的”,哪些对象是”不可达的”。当GC确定一些对象为”不可达”时,GC就有责任回收这些内存空间。可以。

程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

 

/*一些笔记:

人使用计算机的两种方式

1、图像化界面操作:效率低;

2、命令行操作 : 效率高。

创建文件 md;

删除文件 rd;*/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114846.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DHCP协议原理及其实现流程

    DHCP协议原理及其实现流程DHCP(Dynamic Host Configuration Protocol):动态主机配置协议在常见的小型网络中(例如家庭网络和学生宿舍网),网络管理员都是采用手工分配IP地址的方法,而到了中、大型网络,这种方法就不太适用了。在中、大型网络,特别是大型网络中,往往有超过100台的客户机,手动分配IP地址的方法就不太合适了。因此,我们必须引入一种高效的IP地址分配方法,幸好,DHCP(Dy

    2022年5月23日
    32
  • shell基础学习总结

    shell基础学习总结shell基础教程,里面包含代码

    2022年8月11日
    8
  • java学习—探秘Java中的String、StringBuilder以及StringBuffer

    相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲:  一.你了解String类吗?  二.深入理解String、StringBuffer、StringBuilder  三.不同场景下三个类的性能测试

    2022年2月25日
    38
  • Linux服务器tomcat部署war包「建议收藏」

    Linux服务器tomcat部署war包「建议收藏」一、web项目处理1、本地pom.xml文件改造去除springboot自带的tomcat(有两种方式),并且依赖servlet-api;方法一:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions> <exclus

    2022年6月6日
    40
  • 微信小程序css3(微信小程序布局讲解)

    d,e,开头的css属性在小程序里比较少,就放在一起了,先看图:那先说c开头的属性:1.caption-side:这个是表格的标题所处的位置属性。取值:bottom,top。小程序里没有table的标签支持,不清楚怎么设置。小程序里设置表格其实很简单,只需要用列表渲染就可以。如下图:标题一标题二标题三标题四标题五内容内容内容内容内容样式:.table{border:1pxsolidg…

    2022年4月11日
    144
  • Python文件读写「建议收藏」

    Python文件读写「建议收藏」Python文件读写

    2022年4月20日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号