当前位置:首页 > 虚拟机 > 正文

jvm用的什么虚拟机


一、Java程序为何要运行在jvm虚拟机上?Java程序需要运行在JVM(Java虚拟机)上,原因如下:

1平台无关性:Java程序编写的代码是平台无关的,也就是说源代码是独立的。同样的事情,它可以在不同的平台上运行。这是通过将Java源代码编译为字节码文件(.class文件),然后JVM解释并执行这些字节码来实现的。这样,在不同平台上安装相同的JVM版本时,可以运行相同的Java程序。

2。内存管理。Java程序使用垃圾收集来自动管理内存,避免了手动分配和回收内存的麻烦。当程序不再使用时,JVM会自动释放其占用的内存资源,从而保证程序的稳定性和可靠性。

3。安全性:JVM提供了各种安全特性,如类加载器、安全管理器等,可以防止恶意代码破坏系统。此外,JVM还可以限制程序访问权限,以确保敏感信息不被泄露。

4。性能优化:JVM可以根据程序的实际需要进行JIT编译或字节码解释,从而实现各种级别的性能优化。这有助于提高Java程序的速度和响应时间。

5。多线程支持:Java程序可以通过创建多个线程来实现并行编程,从而提高程序执行的效率。JVM为多线程编程提供了广泛的支持,包括线程同步、死锁处理和其他功能。

总之,Java程序运行在JVM上,可以实现跨平台、安全、高效、易于维护的软件开发目标。


二、完整整理关于JVM—JAVA虚拟机的简介

性能优化的关键:JVM揭秘


JVM作为JAVA的灵魂,通过实现WORA(WriteOnce,RunAnywhere)原理,赋予了Java代码跨平台的魔力。它的应用范围已经超过了Java,现在支持Scala、Kotlin等更多编程语言。作为主机上独立的执行环境,兼容各种平台和操作系统。


Java的独特性


Java不同于传统的编译/解释型语言。它的代码首先被编译成字节码,然后由JVMPerform解释使用。类加载器是这个过程的主角。它负责加载和链接.class文件,包括加载和链接三个步骤——加载、验证、准备和执​​行初始化方法。例如,因为多线程,必须注意线程安全。可能会导致并发问题。


JVM架构详解


运行时数据区
方法区:存放类数据和方法代码,如果不当的话管理可能会导致OutOfMemoryError。
堆区:对象和实例变量的存储位置。它是所有线程共享的,但是它不是线程安全的,很容易导致StackOverflowError。
栈区:线程私有,存放局部变量和方法调用,执行效率较高,但需要警惕StackOverflowError。
程序计数器:每个线程都有一个独立的程序计数器,记录当前指令地址。
本机方法栈:为支持本机方法而存在,并为每个新线程单独分配。
执行引擎:字节码在这里转换成机器码,解释器逐行执行,JIT编译器提供了性能优化的可能。
垃圾收集器:自动清理堆内存中无用的对象,包括标记扫描策略,包括串行GC和并行GC。例如,G1GC适合优化多线程大堆应用程序。

交互与挑战


通过JNI,Java和非Java代码(例如C/C++)无缝地协同工作,通过native关键字和系统。loadLibrary()加载本地库。常见的JVM问题包括ClassNotFoundExcecption、NoClassDefFoundError、OutOfMemoryError和StackOverflowError,这些都是开发过程中需要密切关注的警告信号。


深入了解JVM的世界需要从基础开始,到源码分析和高级应用。掌握调参工具是关键。JVM入门指南、深入源码分析、高级技术与实践等一系列相关小册子和主题,将帮助您成为JVM高手。


三、java大数据学习之什么是jvmJVM(JavaVirtualMachine,Java虚拟机)
Java程序的跨平台特性主要是指字节码文件可以在任何有Java虚拟机的计算机或电子设备上运行。用于将解释的字节码文件转换为代码专用机器以供执行。因此,在运行时,Java源程序需要被编译器编译成.class文件。众所周知,是一个javaclass文件执行程序,但实际上程序只是一个执行shell,它会加载(在windows下,下面以windows平台为例。它是其实linux和solaris下类似(for:),这个动态链接库就是Java虚拟机运行的地方,它是一个虚构的计算机,在真实的计算机上模拟各种计算机功能,构建自己完整的硬件,比如处理器、Java语言最重要的特点是跨平台运行,使用JVM的目的是支持操作系统的独立性,实现JAVAJVM所属的机器虚拟。到JRE,现在我们安装JDK的时候,JRE也被安装了(当然JRE也可以单独安装)。