首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JVM-Java代码运行方式

JRE(Java 运行时环境)仅包含运行 Java 程序的必需组件,包括 Java 虚拟机以及 Java 核心类库等。...C++的策略是直接编译成目标架构的机器码,Java的策略是编译成一个虚拟架构的机器码。 使用JVM的好处 一旦一个程序被转换成 Java 字节码,那么它便可以在不同平台上的虚拟机实现里运行。...即 “一次编写,到处运行” 。 JVM带来了一个托管环境(Managed Runtime)。...JVM运行Java字节码 虚拟机视角 执行 Java 代码首先需要将它编译而成的 class 文件加载到 Java 虚拟机中。加载后的 Java 类会被存放于方法区(Method Area)中。...实际运行时,虚拟机会执行方法区内的代码。 Java 虚拟机在内存中划分出堆和栈来存储运行时数据。

72940
您找到你想要的搜索结果了吗?
是的
没有找到

深入JVM学习—Java运行流程

Java运行流程图 2. Java运行时数据区 3....Java内存管理 JVM中的运行时数据区包括: 程序计数器(Program Counter Register) Java栈(Stack) 本地方法栈(Native Method Stack) 方法区...相关知识 JVMJava虚拟机,所有程序都要求运行JVM上,考虑到了可移植性问题。 Java程序中可以使用native关键字实现本地C函数的调用。...但是这些都属于程序运行的辅助手段,而真正的程序都运行在“运行时数据区”之中。...是一个非常小的内存空间,小到可以忽略; 本地方法栈:每一次执行递归的方法处理的时候实际上都会将上一个方法入栈 Java之中存在对象池的概念,对象池是对整个常量的常量池的规则破坏,因为在JVM启动的时候

28310

JVM-1. Java运行时内存

Java虚拟机运行时数据区 方法区(Method Area)和堆(Heap)是所有下次呢很难过共享的数据区 虚拟机栈(VM Stack),本地方法栈(Native Method Stack)和程序计数器...Java虚拟机栈(Java Virtual Machine Stacks) 特点:线程私有,生命周期和线程相同 作用:描述了Java方法执行内存模型:每个方法在执行的同时都创建一个栈帧(Stack Frame...局部变量表的内存空间在编译期间完成分配,在进入一个方法时确认分配的局部变量空间大小,方法运行期间不会改变。 Java方法:每个Java方法从调用到执行完成,对应一个栈帧在虚拟机栈中入栈到出栈的过程。...运行时常量池(Runtime Constant Pool) 运行时常量池是方法区的一部分 存放了编译期生成的字面量和符号引用,一般来说还存放了翻译出来的直接引用 运行期间可以将新的常量放入运行时常量池...直接内存(Direct Memory) 直接内存并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,但是也被频繁使用 NIO类中的基于Channel和Buffer的I/O方式,使用

79820

JVM运行参数

jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。...-server与-client参数 可以通过 -server 或 -client 设置jvm运行参数。...java -Xms64m -Xmx128m TestJVM 查看jvm运行参数 当们需要查看jvm运行参数,这个需求可能会存在2种情况: 第一,运行java命令时打印出运行参数; 第二,查看正在运行的...java进程的参数; 运行java命令时打印参数 运行java命令时打印参数,需要添加-XX:+PrintFlagsFinal参数即可。...查看正在运行jvm参数 如果想要查看正在运行jvm就需要借助于 jinfo 命令查看。 启动一个 tomcat 用于测试,用以观察运行jvm 参数。 cd bin/ .

1.3K20

JVM运行原理详解

JVM在它的生存周期中有一个明确的任务,那就是运行Java程序,因此当Java程序启动的时候,就产生JVM的一个实例;当程序运行结束的时候,该实例也跟着消失了。...API, 利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)实现了程序与操作系统的分离...* 2.JVM基本概念 (1) 基本概念: JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。...JVM运行在操作系统之上的,它与硬件没有直接的交互。...4.JVM数据运行区详解(栈管运行,堆管存储): 说明:JVM调优主要就是优化 Heap堆 和 Method Area 方法区。 ?

30031

【随笔】JVM核心:JVM运行和类加载

前言 本篇博客将写一点关于JVM的东西,涉及JVM运行时数据区、类加载的过程、类加载器、ClassLoader、双亲委派机制、自定义类加载器等,这些都是博主自己的一点理解,如果有误,欢迎大家评论拍砖~...关于JVM运行时数据区 ?...JVM运行时数据区 关于类加载 class文件加载至内存,链接(校验、解析),初始化;最终形成JVM可以直接使用的JAVA类型的过程。...加载:在方法区形成类的运行时数据结构;在堆里面形成该类的Class对象,作为访问方法区的入口。 ? 加载 链接:class文件是否存在问题;一些符号引号替换成直接引用。...另外,被2个不同的类加载加载的同一个类,JVM不会认为是一个类。 好了,关于JVM运行和类加载的过程就写到这里,^_^ 2017.10.29 zhangfengzhe

25630

java架构之路-(十)JVM运行时内存模型

我们这次来说一下运行时内存模型。上一段小代码。...那么这一系列过程在jvm里是怎么做的呢。我们来看一下。 1,为main方法开辟栈空间。 2,新建Main对象,放置在堆中。 3,开始运行compute对象,粗略的说开始计算 4,返回结果。...初始程序计数器为0也就是要运行第一行了,也就是说程序计数器就是控制代码该运行第几行的一个控制器。角标标识,从0开始。...一般来说堆的2/3是我们的老年代,并且我们暂时不需要考虑元空间,元空间现在已经使用的是真实内存,并不占用我们的jvm虚拟机内存。...最近搞了一个个人公众号,会每天更新一篇原创博文,java,python,自然语言处理相关的知识有兴趣的小伙伴可以关注一下。

35120

java JVM

JVM 194.说一下 jvm 的主要组成部分?及其作用?...(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交个底层操作系统去执行...195.说一下 jvm 运行时数据区? 程序计数器、虚拟机栈、本地方法栈、堆、方法区 有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户进程的启动和结束而创建和销毁。 说一下堆栈的区别?...栈和队列很相似,但它运行对元素进行后进先出进行检索。 什么是双亲委派模型? 在介绍双亲委派模型之前先说下类加载器。...java 中都有哪些引用类型? 强引用、软引用、弱引用、虚引用(幽灵引用/幻影引用) 说一下 jvm 有哪些垃圾回收算法?

26920

JVM | 运行时数据区的JVM规范

2.5 Run-Time Data Areas 《深入理解java虚拟机-jvm高级特性与最佳实践》 总述 在这一块的学习时, 我们容易陷入一个误区,就是一上来就直接搜索运行时数据区, 网上有些文章对虚拟机规范和...JVM运行时数据区制定的虚拟机规范 如上参考pdf中及下图所示,主要有六大数据区域: The pc Register | program Counter Register | 程序计数器 程序计数器为线程私有的...Java Virtual Machine Stacks | java虚拟机栈 java虚拟机栈也是线程私有的, 该线程每调用一个方法,都用创建一个栈帧(Frame).栈帧中有局部变量表,操作数栈,动态链接...Run-Time Constant Pool | 运行时常量池 运行时常量池是方法区的一部分,与之对应是.class文件中的静态常量信息,如下图所示: 在class文件加载的链接步骤中的解析阶段,会把静态的常量池和运行时常量池关联起来...) 里面存放的有:已被虚拟机加载的类信息, 常量,静态变量,即时编译器编译后的代码缓存 Native Method Stacks | 本地方法栈 这个和上面的java虚拟机栈没太大的差别, 在jvm规范层面

74630

JVM之晚期(运行期)优化

概述 Java程序在运行的期间,可能会有某个方法或者代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。...为了提高热点代码的执行效率,在运行JVM会将这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler,JIT编译器)。...**JVM默认采用解释器与其中一个编译器直接配合的方法工作,程序使用哪个编译器,取决于虚拟机运行的模式,HotSpot虚拟机会根据自身版本与宿主机器的硬件性能自动选择运行模式,用户也可以使用“-client...解释器与编译器搭配使用的方式在虚拟机中称为“混合模式”,用户可以使用参数”-Xint”强制虚拟机运行于解释模式,也可以使用“-Xcomp”强制虚拟机运行于编译模式。...隐式异常处理:Java中空指针和算术运算中除数为零的检查。此外还有:自动装箱消除、安全点消除、消除反射等等。 方法内联 把目标方法的代码“复制”到发起调用的方法之中,避免发生真实的方法调用。

42520

JVM之认识程序运行本质

JVM之内存结构模型详解 JVM是什么 汇编语言 高级语言 虚拟机是什么 java代码如何转换成机器识别的代码 JVM是什么 刚入门的时候老师教我们写代码是这样的: 写JAVA文件然后用javac命令编译成...class文件运行即可。...JVM中只通过解释器来解释运行效率太慢,所以对于热点代码即反复执行的代码通过JIT即时编译器将其编译为本地代码。这个编译器叫做后端编译器。...JVM流行的一点原因是其跨平台性:一次编译,多端运行 怎么实现的大家也大概猜到了,JVM虚拟机识别操作系统将class字节码转换为不同操作系统可以识别的指令。...java代码如何转换成机器识别的代码 我们写代码的时候通过编写JAVA文件,通过javac命令编译成class文件,用java命令运行class文件。

31830

查看JVM运行参数jinfo命令

jinfo 是 JDK 自带的命令,可以用来查看正在运行java 应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行JVM 一些参数。...当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息 查看jvm所有参数默认值 > java -XX:+PrintFlagsInitial -version 查看jvm所有的参数...> java -XX:+PrintFlagsFinal -version 查看当前JVM运行的参数 用法: > jinfo -flags pid 查看系统所有的Java进程 > jcmd 24386...进程的值 jinfo虽然可以在java程序运行时动态地修改虚拟机参数,但并不是所有的参数都支持动态修改jinfo -flag name=value pid 输出当前JVM进程所有的系统属性 > jinfo...JVM version is 25.261-b12 java.runtime.name = Java(TM) SE Runtime Environment jna.platform.library.path

5.1K00

性能优化-jvm运行参数

2、jvm运行参数 在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。...2.2.2、-server与-client参数 可以通过-server或-client设置jvm运行参数。...示例: [root@node01 test]# java ‐Xms512m ‐Xmx2048m TestJVM itcast 2.6、查看jvm运行参数 有些时候我们需要查看jvm运行参数,这个需求可能会存在...2种情况: 第一,运行java命令时打印出运行参数; 第二,查看正在运行java进程的参数 2.6.1、运行java命令时打印参数 运行java命令时打印参数,需要添加-XX:+PrintFlagsFinal...2.6.2、查看正在运行jvm参数 如果想要查看正在运行jvm就需要借助于jinfo命令查看。 首先,启动一个tomcat用于测试,来观察下运行jvm参数。 ? 访问成功: ?

62541
领券