JVM简介
JVM全称(Java Virtual Machine,JVM虚拟机)
对Java程序来说,JVM就是操作系统,就是一台计算机。 Java程序运行在JVM之上,内存、CPU、线程的管理、垃圾回收对于程序员来说,对于操作系统来说,JVM只是一个进程(应用程序)
Java语言
作为世界上最流行的编程语言,Java可以编写C/S、B/S式的软件。语法由Java Language Specification规定
。 Java ®编程语言是通用的,并发的,面向对象的语言。它的语法类似于C和C ++,但是省略了许多使C和C ++复杂,混乱和不安全的功能。最初开发Java平台是为了解决为网络消费设备构建软件的问题。
它旨在支持多种主机体系结构并允许安全交付软件组件。为了满足这些要求,编译后的代码必须能够在跨网络的传输中幸存下来,可以在任何客户端上运行,并确保客户端可以安全运行。包含Java平台的Web浏览器不再局限于一组预定功能。可以确保包含动态内容的网页的访问者可以确信其内容不会损坏其计算机。程序员可以编写一次程序,并且该程序可以在提供Java运行时环境的任何计算机上运行。
平台
作为一个开发平台,以JVM为基础,除Java外还有Groovy,Scala,Kotlin,JRuby,Clojure,Jython等语言。虚拟机内部机制由Java virtual Machine Specification规定
。
文化
作为一种文化,Java几乎成为可“开源”的代名词
生态
作为生态,Java拥有世界最多的技术拥护者和开源社区的支持。从桌面应用软件、嵌入式开发到企业级应用、后台服务、中间件都可以看到Java的身影
JVM
Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。
1.编译后产生的字节码class文件其中的指令是抽象的
2.官方针对主流的操作系统,各自提供了不同的JVM版本,运行的时候翻译成CPU的机器指令
因为Java运行后会被编译成class文件,主流的操作系统如Windows 、Mac 、Linux等都提供的相应的JVM。
Java虚拟机的第一个原型实现是在Sun Microsystems Inc完成的,类似于当代个人数字助理(PDA)的手持设备托管的软件中模拟了Java虚拟机指令集。Oracle当前的实现在移动设备、桌面、和服务器设备上模拟Java虚拟机,但是Java虚拟机不假定如何特点的实现技术、主机硬件或主机操作系统。她本身并不是解释的,但也可以通过将其指令集扁你为硅CPU的指令集来实现。它也可以在微码或直接在硅中实现。
Java虚拟机堆栈
每个Java虚拟机线程都有一个私有Java虚拟机堆栈,与该线程同步创建。Java虚拟机堆栈类似于常规语言例如C语言的堆和栈:她保存局部变量和部分结果,并在方法调用和 放回中起作用。以为除了推送,和弹出帧外,初步直接操作Java虚拟机堆和栈,所以可以为堆分配帧。Java虚拟机堆栈的内存不必是连续的。
以下异常条件与Java虚拟机堆栈相关:
如果线程中的计算需要比允许的Java虚拟机更大的堆栈,则Java虚拟机将抛出StackOverflowError。
如果可以动态扩展Java虚拟机堆栈,并且尝试进行扩展,但是可以提供足够的内存来实现扩展,或者如果没有足够的内存来为新线程创建初始Java虚拟机堆栈,则Java虚拟机机器抛出一个OutOfMemoryError。