目录
一个”.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程序在该系统中的运行。
如图:
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;*/
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114846.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...