如何启动JAVA里的JVM?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何启动JAVA里的JVM?相关的知识,希望对你有一定的参考价值。
方法如下:
1、虚拟机的启动入口位于share/tools/launcher/java.c的main。
2、配置JVM装载环境。
3、解析虚拟机参数。
4、设置线程栈大小。
5、执行Java main。
配置JVM装载环境的方法:
1、Java代码执行时需要一个JVM环境,JVM环境的创建包括两部分:JVM.dll文件的查找和装载,我们来看一段Jre通过环境的路径和系统版本寻找jvm.cfg文件的代码。
说明:
1)GetJREPath()查找当前JRE环境的所在路径。
2)ReadKnownVms()读取JRE路径\\lib\\ARCH(CPU构架)\\JVM.cfg文件,其中ARCH(CPU构架)通过GetArch方法获取,在window下有三种情况:amd64、ia64和i386。
3)CheckJvmType确定当前JVM类型,先判断否通过-J、-XXaltjvm=或-J-XXaltjvm=参数指定,如果没有,则读取JVM.cfg文件中配置的第一个类型。
4)GetJVMPath根据上一步确定的JVM类型,找到对应的JVM.dll文件。
当使用 Java 命令运行 .class 文件的时候,就相当于启动了一个 JVM 进程,如何理解?
请教各位大佬,这里说的启动了一个JVM进程,这个进程和操作系统进程是一个意思么?
我不太理解jvm当中具体有哪些进程,望解答。谢谢。
进程是操作系统资源管理的基本单位,运行.class文件和打开一个应用软件(当然有些软件可能对于多个进程)是类似的,都会创建一个操作系统进程。
你提到的"运行.class启动的JVM进程",实际上这个就是操作系统创建的进程;这个进程需要一定的资源(CPU、内存、磁盘等)来完成一定的事情,进程之间不会相互干扰,所以每个软件都需要操作系统分配进程。
至于你说的"JVM中有哪些进程",我理解应该是"JVM中有哪些"线程;建议去了解一下进程和线程之间的区别。我个人理解进程和线程的核心区别是:进程是资源管理、分配的基本单位,这个类比于公司;而线程是操作系统调度的基本单位,类比于公司员工。上级部门在分配资源的时候肯定是分配名额到企业,但是分配资源具体怎么使用,则需要由企业的员工来完成。
一般JVM中的线程由用户创建,但是JVM也会默认创建一些线程,比如垃圾回收线程。
参考技术A 你运行一个main方法的时候 会启动一个java进程 编译解析.class文件 main函数是java规范,你可以理解它就是应用程序的入口以上是关于如何启动JAVA里的JVM?的主要内容,如果未能解决你的问题,请参考以下文章