Java概述
1:JDK(开发环境)、JRE(运行环境)、JVM(java虚拟机)
Java语言是一种特殊的高级语言,它既具有解释性语言的特征,也具有编译型语言的特征,因为java程序要经过先编译,后解释两个步骤。(python属于解释型语言)
编译型语言:编译型语言指使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性“翻译”成可被该平台硬件执行的机器码(编译成机器码)。并包装成该平台所能识别的可执行型程序的格式。编译生成的可执行性程序可以脱离开发环境,在特定的平台独立运行。
解释型语言:指使用专门的解释器对源程序逐行解析成特定平台的机器码(解析成机器码)并立即执行的语言。解析型语言通常不会进行整体性的编译和链接处理,解析型语言相当于把编译型语言中的编译和解析过程混合在一起同时完成。
两者比较:编译型语言由于一次性编译因此执行效率高,而解释型语言由于是逐行编译与解析因此执行效率相对较低。但解释型语言跨平台容易,而编译型语言跨平台难。
java语言是一种不严格的编译型语言,这是因为它首先经过编译生成字节码文件(.class文件),该文件却与平台无关,且不可执行,它还需要jvm做为解析器对其进行翻译。因此java即具有编译型语言的特点,又具有解析型语言的特点(即只编译不解析,java是无法运行的)。
为什么说java语言可以跨平台?
首先java在编译时生成的字节码文件与对应的平台无关,而仅与jvm有关。同时不同平台所具有的jvm也是不同的,但这些jvm处理字节码文件的接口是相同的。因此这就字节码文件可以被不同平台上的jvm处理。因此对于java也就等效于可以在不同平台上运行。即java可以跨平台。
6、JVM是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。
7、java垃圾回收机制特点
1)java垃圾回收主要回收jvm堆内存里的内存空间(内存资源),而不回收物理资源,如数据库链接、磁盘I/O等资源。
2)可以通过将无用对像设置为null,来提醒jvm对该无用对像进行回收。
3)垃圾回收发生是不可预知的,有时会发生在jvm空闲时,有时会发生在jvm存储达到极限时,这个主要与jvm设置有关。
4)虽然程序员可以通过System.gc()或finalize()方法来实现提醒jvm进行垃圾回收,但这仅仅是对jvm垃圾回收的一个建议性质的命令,依然不能精确控制垃圾回收机制执行。
5)垃圾回收精准性表现在两个方面:1能够精确标记活着的对像;2能够精确地定位对象之间的引用关系。
|
|