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


相关推荐

  • 大批量数据excel下载—本文作者只试了51万数据的下载,用时7秒

    一.背景:现在的项目里,有诸多下载功能,随着数据越来越多,下载的时间也越来越长,很影响用户体验,为了解决这一问题,我不得不挺身而出,斩破难关。项目中原本用的是poi-HSSFWorkbook,但是如果是50万数据量下载,回经历一个漫长的等待过程,然后内存溢出。jxl也不用想了,估计也差不多。二.两种方法:后来从网上搜索发现针对大数据量的导出有两条路可以走:第一:用poi-SXSSFWo

    2022年4月4日
    44
  • 2k21本世代和次世代生涯一样吗_nba2k21次世代价格

    2k21本世代和次世代生涯一样吗_nba2k21次世代价格原题链接对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,总评成绩必须达到 60 分及以上,并且有另加福利:总评分在 [G, 100] 区间内者,可以得到 50 元 PAT 代金券;在 [60, G) 区间内者,可以得到 20 元PAT代金券。全国考点通用,一年有效。同时任课老师还会把总评成绩前 K 名的学生列入课程“名人堂”。本题就请你编写程序,帮助老师列出名人堂的学生,并统计一共发出了面值多少元的 PAT 代金券。输入格

    2022年8月8日
    6
  • My first blog

    My first blog

    2022年3月5日
    38
  • es数据库简介

    es数据库简介##1.es是什么ElasticSearch简称ES,是一个高拓展和开源的全文搜索和分析引擎,可以准实时地存储、搜索、分析海量的数据。它和MongoDB、redis等一样是非关系型数据。业应用定位:采用RestfulAPI标准的可扩展和高可用的实时数据分析的全文搜索工具。可拓展:开源软件,支持很多第三方插件。高可用:在一个集群的多个节点中进行分布式存储,索引支持shards和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。采用RestfulAPI标准:通过http接口使用JSO

    2022年5月7日
    58
  • virtualenv技巧

    virtualenv技巧

    2022年3月2日
    38
  • 深入理解mybatis原理(五) MyBatis缓存机制的设计与实现

    深入理解mybatis原理(五) MyBatis缓存机制的设计与实现本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存机制中的方方面面展开讨论。MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存:     一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存。一级缓存是MyBatis内部实现的一个特性

    2022年5月11日
    36

发表回复

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

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