Java 虚拟机的运行模式

这几天在读周志明老师的<深入理解JVM虚拟机>

讲到了 java的运行模式, 有mixed 模式 interpret模式还有compile模式.效果如下面所示

java -version 

java -Xint -version

java -Xcomp -version

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/11211376.html

时间: 2024-11-08 18:36:55

Java 虚拟机的运行模式的相关文章

深入理解Java虚拟机:运行时数据区域

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁.根据<Java虚拟机规范(Java SE 7版)>的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域. 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里

深入理解Java虚拟机笔记---运行时栈帧结构

栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素.栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息.第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程. 每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址和一些额外的附加信息.在编译代码的时候,栈帧中需要多大的局部变量表,多深的操作数栈都已经完全确定了,并且写入到了方法表的

深入JAVA虚拟机之运行时数据区

前言最近在啃一本书<深入JAVA虚拟机>,这本书不是第一次看,可以说是从大学就开始看,这一次应该算第三次啃这本书,也应该说算是第一次真正啃这本书.大学的时候,只是好奇表层的一些神奇现象,随着工作几年后,现在回过头来再次啃这本书,对于表层的那些以前觉得神奇的现在已经感觉乏味,反而对于底层是如何实现.如何运作的越来越着迷.这也是这次看这本书的初衷.通过写博客记录下自己的学习过程,也方便以后回头看看现在的看法想法在将来会变成怎样.如果我在下面的文字表述上或者理解上有误解或者错误,请各位大神能够留言指

java虚拟机2.运行时内存对象

对象的创建 虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载.解析和初始化过. 在类加载检查通过后,接下来虚拟机将为新生对象分配内存.对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分出来. 假设java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那分配内存就仅仅是把那个指针向空闲空间那边挪动

java虚拟机3.运行时内存异常

在java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能. java堆溢出 java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量达到最大堆得容量限制后就会产生内存溢出异常.当出现java堆内存溢出时,异常堆栈信息"java.lang.OutOfMemoryError"会跟着进一步提示"java heap space&qu

详细理解Java虚拟机的运行过程

基本概述: Java虚拟机简称JVM,是JRE中的一部分,也是Java程序运行的最关键的部分.完整的Java运行流程大致包括编译.java文件形成.class文件,然后根据.class文件的内容进行一系列的步骤使整个程序运行起来.其中将.java文件编译为.class文件由Java编译器完成,而由.class文件进而完成整个运行过程则主要是由JVM来完成的.由于所有的编译链接过程都由JRE来完成,所以Java具有良好的平台可移植性,不依赖具体的操作系统. 具体结构及功能: 1.Class Loa

Java虚拟机运行时数据区

PS:时间一晃好久了,距离上一篇文章过去许久了,出自两个方面的原因,其一,公司的项目接近尾声,用户提出的需求功能需要马上的解决:其二,出自整天加速完善和修改需求功能,下班之后几乎不想再继续下去了,懒散情绪有了. 扯淡话题结束了,开始继续学习笔记文章的整理,每天一小步,久而久之就是巨大的一步.今天要扯的话题是Java虚拟机的运行时数据区. Java虚拟机(JVM)是 由JDK提供的一个软件程序,而其任务就是执行Java程序,下面给出虚拟机执行Java的过程图. 从图中可以看出由Java源文件编译出

Java虚拟机运行时数据区域划分

Java虚拟机数据运行时区域 方法区(Method Area) 存储加载的类信息,常量,静态变量,编译器编译后的代码等数据.虽然JVM规范把方法区描述为堆的一个逻辑部分,但它却有一个别名叫做Non-Heap.Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项是常量池,用于存放编译器生成的各种字面量和符号引用,包括字符串常量.JVM加载Class后把常量池中的数据放入到运行时常量池.方法区的运行时数据(包括运行时常量池)是线程共享的. 堆(Java Heap) 堆是被线程共享的

Java为什么要在虚拟机中运行

简单的来说,Java作为一门高级程序语言,语法复杂,抽象度高,不能直接翻译为机器码在机器上运行,所以设计者就设计了虚拟机,通过编译器将Java程序转换成虚拟机所能识别的指令码,也就是Java字节码,Java字节码会被虚拟机翻译为可以被机器识别的机器码.这也实现了Java的跨平台 虚拟机的第二个好处就是带来了一个托管环境,托管环境能够代替我们处理代码中冗余并且容易出错的部分,比如自动内存管理,垃圾回收. 还有诸如数组越界.动态类型.安全权限等等动态监测. Java如何在虚拟机中运行的 从虚拟机角度