`
shyboy0358
  • 浏览: 35605 次
文章分类
社区版块
存档分类
最新评论

JVM原理

 
阅读更多
说JVM之前先来说一下Java中的堆和栈。
1:数据类型
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型

基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。

1)基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress

2)引用类型包括:类类型,接口类型和数组。

2:堆与栈
栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。
在Java中一个线程就会相应有一个线程栈与之对应,这点很容易理解,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈。而堆则是所有线程共享的。栈因为是运行单位,因此里面存储的信息都是跟当前线程(或程序)相关信息的。包括局部变量、程序运行状态、方法返回值等等;而堆只负责存储对象信息。

第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。

第二,堆与栈的分离,使得堆中的内容可以被多个栈共享(也可以理解为多个线程访问同一个对象)。这种共享的收益是很多的。一方面这种共享提供了一种有效的数据交互方式(如:共享内存),另一方面,堆中的共享常量和缓存可以被所有栈访问,节省了空间。

第三,栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。由于栈只能向上增长,因此就会限制住栈存储内容的能力。而堆不同,堆中的对象是可以根据需要动态增长的,因此栈和堆的拆分,使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可。
堆中存的是对象。栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可以动态变化的,但是在栈中,一个对象只对应了一个4btye的引用(堆栈分离的好处:))。

堆和栈中,栈是程序运行最根本的东西。程序运行可以没有堆,但是不能没有栈。而堆是为栈进行数据存储服务,说白了堆就是一块共享的内存。不过,正是因为堆和栈的分离的思想,才使得Java的垃圾回收成为可能。


一:JVM的生命周期
1:JVM实例对应了一个独立运行的java程序它是进程级别
启动一个Java程序时,一个JVM实例就产生了,任何一个拥有
public static void 
main(String[] args)函数的class都可以作为JVM实例运行的起点

2.JVM执行引擎实例则对应了属于用户运行程序的线程它是线程级别的

二、JVM的体系结构
1:类加载器(classloader)
用来加载.class文件
2:执行引擎
执行字节码或本地方法(native)
3:数据区
方法区,寄存器,堆,栈,本地方法栈

三:类加载器
classloader抽象类提供了几个关键的方法。
例如,
1)loadclass
此方法负责加载指定名字的类。
2)findClass,作用与loadclass相同。
3)defineclass
此方法负责将二进制的字节码转换为CLASS对象

四:执行引擎
JVM通过执行引擎来完成字节码的执行。
反射的关键是要实现动态的调用,最明显的方法就是动态的生成字节码,加载到JVM中并执行。
Class actionClass = Class.forName(xxxx);
调用本地方法,使用调用者所在的ClassLoader来加载Class对象
Method method = actionClass.getMethod("execute",null);
校验Class是否为public,以确定类的执行权限。没有则抛出异常。
Object action = actionClass.newInstance();
执行构造器对象的newinstance方法。
method.invoke(action,null);
五:数据区
1)PC寄存器
存储每个线程下一步将执行的JVM指令,如该方法为native,则不存任何信息。
2)JVM栈
JVM栈是私有的,每个线程创建的同时都会创建栈,JVM栈中存放的为当前线程中局部变量(八中基本类型和非基本类型的引用)
3)堆
JVM用来存储对象实例以及数组值的区域。
分享到:
评论

相关推荐

    JVM原理一秒懂,不懂算我输.zip

    了解并熟练掌握JVM原理对于Java开发者至关重要,无论是编写高效代码还是排查性能问题,都有着深远的影响。通过阅读提供的"JVM原理.pdf",你可以更深入地理解这些概念,并结合实际应用,提升自己的编程技能。

    浅谈jvm原理

    "浅谈 JVM 原理" JVM(Java Virtual Machine)是一种虚拟机,它可以模拟完整的硬件系统功能,运行在一个完全隔离的环境中,提供了一个完整的计算机系统。JVM 可以分为三类:VMWare、Visual Box 和 JVM。其中,...

    jvm原理及调优

    ### JVM原理及调优 #### 一、JVM概述 JVM(Java Virtual Machine,Java虚拟机)是Java编程语言的基础,它作为一种软件层面的抽象计算机,能够在多种操作系统平台上执行Java字节码程序。Java编译器的目标是生成能够...

    JAVA JVM原理资料

    ### JAVA JVM原理资料知识点 #### 一、语言处理器的基本结构 **语言处理器**是指能够处理某种编程语言的工具,常见的包括编译器、解释器、IDE等。 1. **编译器的基本结构**: - **词法分析器**:将源代码分割成...

    JAVA应用JVM原理及参数调优深入讲解视频.zip

    JAVA应用JVM原理及参数调优深入讲解视频.1 JAVA应用JVM原理及参数调优深入讲解视频.2 JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 ...

    06.JVM原理讲解和调优.pdf

    JVM 原理讲解和调优 JVM(Java Virtual Machine,Java 虚拟机)是 Java 语言的核心组件,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 的主要功能是将 Java 字节码转换为...

    JAVA应用JVM原理及参数调优深入讲解视频.rar

    通过以上对JVM原理和参数调优的深入学习,开发者可以更好地理解Java应用程序的运行机制,优化系统性能,解决可能出现的内存溢出、性能瓶颈等问题。本课程详细讲解了这些内容,无论你是初学者还是经验丰富的开发者,...

    JVM原理.pdf

    总的来说,JVM原理的深入理解可以帮助开发者更好地编写代码、优化性能和解决线上问题。冯立全通过分享,将JVM原理的理论与实践相结合,为听众提供了一个全面了解JVM的机会。这对于需要深入探讨Java生态系统和提高...

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

    标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...

    JVM原理讲解和调优,详细讲解JVM底层

    理解JVM的工作原理对于提升Java应用的性能和稳定性具有重要意义。开发者可以通过对JVM进行调优,结合业务场景和应用需求,合理配置JVM内存大小、调整垃圾回收策略和类加载机制,从而达到优化应用性能的目的。

    jvm原理与调优

    该文档是关于java虚拟机的原理,描述及调优视频,其中,详细讲述了jvm的运行机制,类装载器,GC算法,性能监控工具,堆,锁等内容。

    JVM原理.doc

    Java虚拟机(JVM)是Java平台的核心组成...总结来说,JVM原理包括了它的整体结构、代码的编译执行流程、类加载的逻辑以及内存管理策略和垃圾回收机制。理解和掌握这些知识点对于深入理解Java程序的运行机制至关重要。

    jvm 启动过程 JVM 原理

    本文将深入探讨JVM的启动过程及其基本原理。 首先,我们需要理解JVM的基本概念。JVM是Java Virtual Machine的缩写,它是Java平台的核心组件之一。它的主要任务是将编译后的Java类文件(.class文件)中的字节码转换...

    JVM原理-jvm内存及相关图示

    JVM原理-jvm内存及相关图示 JVM(Java Virtual Machine)是Java开发工具包(JDK)的一部分,它的主要作用是将Java字节码文件(.class文件)解释并执行,使得Java语言可以跨平台运行。JVM主要由类加载子系统、执行...

    Sun JVM原理与内存管理

    ### Sun JVM原理与内存管理 #### 一、Sun JDK 1.6 GC (Garbage Collector) Sun JDK 1.6 的垃圾收集器(GC)是其内存管理的关键组成部分,它负责自动地回收不再使用的对象所占用的内存。本文将详细介绍Sun JDK 1.6 GC...

    JVM原理.docx

    ### JVM原理核心知识点详解 #### 一、Java虚拟机的生命周期 Java虚拟机的主要任务是在程序开始时启动,执行Java程序,并在程序结束时停止。一个运行中的Java虚拟机实例代表着一个正在执行的Java程序。 - **启动**...

    (主讲视频)JVM原理、内存模型、性能调优

    ### JVM原理、内存模型、性能调优 #### 一、JVM原理概述 Java虚拟机(JVM)是一种用于执行Java字节码的虚拟机。它为Java程序提供了一个独立于平台的运行环境,并且能够自动处理内存管理和垃圾回收等工作。JVM的核心...

    jvm原理机器调优-jvm.zip

    JVM原理和调优是每个Java开发人员必须掌握的关键技能,这涉及到内存管理、垃圾收集、性能优化等多个方面。在深入理解JVM的工作机制后,我们可以更好地调整和优化应用程序,提升系统的性能和稳定性。 一、JVM结构与...

    精通jvm,你想要的jvm原理都在这理

    深入理解JVM原理和垃圾回收机制对于Java开发者来说至关重要,它能帮助你编写出更高效、更稳定的代码,避免内存泄漏和性能瓶颈。通过实践和学习,你可以掌握如何有效地配置和调优JVM,从而提升应用的整体性能。同时,...

    java中jvm原理和实现

    ### Java中JVM原理与实现 #### 一、引言 Java虚拟机(JVM)作为Java语言的基础支撑,是确保Java程序能够在不同平台上顺畅运行的关键技术。本文将深入探讨JVM的工作原理及其核心组成部分,包括类加载器、运行时数据区...

Global site tag (gtag.js) - Google Analytics