`
dalan_123
  • 浏览: 86956 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

jvm那些事 一

    博客分类:
  • java
 
阅读更多

jvm是虚拟机,也是一种规范。遵循着冯.诺依曼体系结构的设计原理。jvm是通过在操作系统上建立虚拟机,再有自己定义一套统一的数据结构和操作指令,再将统一的语言翻译给各大操作系统,进而实现跨平台。也就是说jvm是java的核心,也是java一次编译到处运行的本质所在。

一、组成和原理

从根本上来说,jvm只是一种规范,是一个虚拟机,虽然遵循着冯诺依曼的computer的设计原理,但是它却不是真实的实体计算机。那么它的构成也不是存储器、控制器、运算器、输入输出等设备。所以用合理的话说,jvm更像是运行在操作系统中的应用或者进程。那么它的组成也就是所谓的功能模块构成。现有比较流行的jvm:oracle jvm、hp jvm、ibm jvm等

java的开发人员都知道,jdk是java开发必备的,而jdk的构成中有一部分是jre,也就是java运行环境,而jvm则是jre中最核心的部分。



 那么从这个图片上可以看到jvm的重要性。同样在实际的项目应用中,性能优化、OOM处理最终处理方案都是基于此。像oracle的jvm 有两个不同实现:java hotspot client vm 和 java hotspot server vm ,区别在于前者减少启动的时间和内存占用;后者则提供更加优秀的程序运行速度。



 

接下来,来看看jvm的组成:Class Loader 、Runtime data area 、 execution engine、native interface。



 1、classloader 是负责加载class 文件的,class文件在文件开头有特定的文件标示,并且classloader只负责class文件的加载。至于运行则有execution engine决定

2、native interface 负责调用本地接口,也就是调用不同语言的接口供java使用。同时这些本地方法都会在native method stack 中有所记录,在调用该方法时,就可以通过execution engine 加载对应的本地lib。现在这些本地方法的接口调用基本采用socket通信和webservice等方式取代。

3、execution engine是执行引擎。主要是在class 文件加载完成后,会将指令和数据放入内存,那么关于这些内容的解释成操作系统所接受的内容,便有execution engine完成。

4、runtime data area 则是存放数据的,主要由:stack、 heap、method area 、pc register、native method stack 。也就是关于java的内存都集中在此。

 关于java runtime data areas:  


 上图只是jvm中关于runtime data areas 的划分,可能不同的jvm实现最终这些内容和上图是有出入。
 

我们还是使用该图进行粗略描述

1、stack是java的栈内存,等同于c的栈。注意栈的内存是不连续的,因为每一个线程都有自己的栈。栈里则存放stack frame。stackframe包括:局部变量、执行环境、操作数栈。局部变量:存放某一个类中的所用到的局部变量;执行环境:保存解析java字节码过程中所需要的信息(上次调用方法、局部变量指针、操作数栈的栈顶和栈低指针);操作数栈:用于存储运算所需的操作数和结果。一般来说,stackframe只在方法被调用时创建;在某一个线程,某一个时间点,只有一个框架是活动的,即为current frame,方法则为current method 。局部变量和操作数栈上的操作总是引用当前框架。当stackframe中方法执行完成或者调用其他stackframe中的方法时,则当前的栈变为另一个stackframe。stack大小一般分为动态和静态两种,动态按照线程需要分配;(具体看查:http://www.programering.com/a/MzM3QzNwATA.html 和 java虚拟机框架)

待续。。。。。。

  • 大小: 187.3 KB
  • 大小: 22 KB
  • 大小: 12.9 KB
  • 大小: 32.3 KB
分享到:
评论

相关推荐

    JVM的那些事.pptx

    1. **词法分析与语法分析**:将源代码分解成一个个具有特定含义的词法单元(Token),然后检查这些词法单元是否符合Java语言的语法规则。 2. **插入到符号表**:在编译过程中,会创建一个符号表来存储程序中的所有...

    JVM那些事 (附PPT下载)

    **JVM那些事** 在Java开发中,JVM(Java Virtual Machine)扮演着至关重要的角色。它是Java程序运行的基础,负责解析和执行字节码,实现了跨平台的特性。了解JVM的工作原理对于优化程序性能、排查问题以及深入理解...

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    1. JVM原理:JVM的工作原理涉及类加载器(ClassLoader)、类文件(ClassFile)、内存管理及垃圾收集机制。类加载器负责将.class文件加载到内存中,为程序的运行准备数据结构。内存管理涉及JVM内存区域,包括堆、栈、...

    jdk,jvm源码

    Java虚拟机(JVM)是Java程序运行的核心,它负责解释和执行字节码,为Java应用程序提供了一个跨平台的运行环境。JDK(Java Development Kit)包含了开发和运行Java程序所需的所有工具,包括JVM。当我们谈论"jdk,jvm...

    深入理解JVM&G1; GC

    《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...

    jvm 启动过程 JVM 原理

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。本文将深入探讨JVM的启动过程及其基本原理。 首先,我们需要理解JVM的基本概念。JVM是Java Virtual Machine的缩写,它是...

    JVM图解-JVM指令-JVM原型图.rar

    1. **JVM架构**: - **类加载器**:负责加载.class文件,确保程序运行所需的类能够被找到并加载到内存中。 - **运行数据区**:包括堆、方法区、虚拟机栈、本地方法栈和程序计数器等几个部分。 - **堆**:存储对象...

    JVM中文指令手册.pdf

    2. push指令:对于int类型的其他数值,除了-1到5这些特殊情况外,可以使用带有参数的push指令(如bipush),将一个1字节(byte)的整数推送到操作数栈。push指令允许把更大范围的整数压入栈中,参数是具体的数值。 ...

    jvm 详细介绍,了解jvm各个组成部分和功能

    不同于 C/C++ 这类需要针对不同平台进行编译的语言,Java 采用了一种更为灵活的方式:将 Java 源代码编译为字节码(Bytecode),这种字节码可以在任何安装了 JVM(Java 虚拟机)的平台上运行。这种方式确保了 Java ...

    一个jvm启动多个springboot服务

    在Java世界中,JVM(Java虚拟机)是运行所有Java应用程序的基础,它为每个应用程序提供了一个独立的运行环境。Spring Boot是一个简化Spring应用开发的框架,它通过提供默认配置和starter项目,使得构建微服务变得...

    SAP JVM 8.1 64 bits

    1. **64位架构**:SAP JVM 8.1是针对64位操作系统设计的,这意味着它可以利用更多的内存资源,处理更大规模的数据,并且在多处理器系统上提供更好的并行处理能力。64位架构对于大型企业级应用如SAP系统来说至关重要...

    jvm视频及笔记

    1. **JVM架构**:JVM主要由类装载器、运行时数据区、执行引擎、本地方法接口和本地库组成。了解每个部分的功能对于优化程序性能至关重要。 2. **类装载机制**:包括加载、验证、准备、解析和初始化五个阶段,确保类...

    一个开源的JVM

    JamVM是一个小型、快速的JVM,设计用于嵌入式系统和那些资源有限的环境。它遵循Java虚拟机规范,能够执行标准的Java字节码。这个版本号表明这是该项目在2004年的更新,可能包含当时的最新特性和修复。 以下是关于...

    jvm paper jvm

    JVM通过解析字节码(Bytecode)来运行Java应用程序,实现了“一次编写,到处运行”的理念。本篇文章将深入探讨JVM的各个方面,包括其工作原理、内存模型、垃圾收集以及性能优化。 一、JVM工作原理 Java源代码经过...

    jvm-mon基于控制台的JVM监视

    1. **内存监控**:`jvm-mon`能够显示堆内存、非堆内存(如 PermGen 或 Metaspace)的使用情况,包括总大小、已分配、已使用以及剩余空间等信息,帮助开发者发现内存溢出问题。 2. **GC活动追踪**:它会记录垃圾收集...

    JVM 输出 GC 日志导致 JVM 卡住

    JVM 输出 GC 日志导致 JVM 卡住是一个常见的问题,尤其是在高并发和高性能应用中。这个问题的根源在于 JVM 的垃圾回收机制(Garbage Collection,GC),它会在 JVM 运行时周期性地进行垃圾回收,以释放内存空间。...

    JVM必知必会

    - **垃圾收集**:指JVM回收那些不再被使用的对象占用的内存空间。 - **垃圾收集器**:不同垃圾收集器有不同的算法和特点,如G1收集器、CMS收集器等。 - **垃圾收集算法**:标记-清除、复制、标记-整理、分代收集等。...

    狂神说JVM探究.rar

    1. **JVM概述**: - JVM是Java平台的核心组成部分,它是一个运行Java字节码的虚拟机,负责执行Java程序。 - JVM实现了Java的跨平台特性,即“一次编写,到处运行”。 2. **类加载机制**: - 类的生命周期包括...

    JVM

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境,使得Java代码能够在不同的操作系统上“一次编写,到处运行”。JVM是Java平台的一部分,负责执行字节码,管理内存,垃圾收集,以及提供...

Global site tag (gtag.js) - Google Analytics