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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • anaconda跟pycharm_pycharm跟anaconda有什么区别

    anaconda跟pycharm_pycharm跟anaconda有什么区别Anaconda是一个科学计算环境,当在电脑上安装好Anaconda3以后,就相当于安装好了Python,还有一些常用的库,如numpy,scrip,matplotlib等库。(如果你这里没有安装anaconda的话,直接安装了Python,装完Python想要使用这些库的话还要在cmd中运行pipinstall…

    2022年8月26日
    5
  • pyhcarm激活码破解方法

    pyhcarm激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    127
  • 数据挖掘在电子商务中的应用

    数据挖掘在电子商务中的应用如何对大量信息进行有效组织利用,使用户能够从大量繁杂的信息中找出真正有价值的信息和知识,帮助企业制定更好的营销策略。信息处理技术有了新的应用研究课题——数据挖掘。 1.数据挖掘在电子商务中的作用  数据挖掘技术之所以可以服务电子商务,是因为它能够挖掘出活动过程中的潜在信息以指导电子商务营销活动。在电子商务中其作用有4个方面:  (1)挖掘客户活动规律,针对性的在电子商务平台下以提供…

    2022年6月20日
    29
  • 初学者python详细安装步骤_编程工具

    初学者python详细安装步骤_编程工具前言:随着人工智能的快速发展,python语言越来越受大家的欢迎,目前Python官网已经更新到了最新版Python3.7.2,这里详细介绍python安装,希望会对大家有所帮助,欢迎留言提问。

    2022年7月6日
    25
  • Mac更换pip源[通俗易懂]

    Mac更换pip源[通俗易懂]这里用的是阿里的源,其他源请自行更换http://mirrors.aliyun.com/pypi/simple/即可mkdir~/.piptee~/.pip/pip.conf<<-‘EOF'[global]index-url=http://mirrors.aliyun.com/pypi/simple/[install]trusted-host=mirrors.al…

    2022年5月27日
    66
  • java如何将字符串转化为日期_java如何将字符串转为日期「建议收藏」

    java如何将字符串转化为日期_java如何将字符串转为日期「建议收藏」一、概述将Java中字符串“2010年1月2日”格式的转换为日期的最佳方法是什么?最终,我想将月份,日期和年份分解为整数,以便可以使用Datedate=newDate();date.setMonth()..date.setYear()..date.setDay()..date.setlongcurrentTime=date.getTime();将日期转换为时间。二、详解java.u…

    2025年6月14日
    2

发表回复

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

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