`
不平凡的人
  • 浏览: 35201 次
  • 性别: Icon_minigender_1
  • 来自: 嘉峪关
社区版块
存档分类
最新评论

JVM概述

 
阅读更多

本文从以下方面对JVM进行描述:

 

一、Java虚拟机概述与基本概念

二、堆、栈、方法区

 

一、Java虚拟机概述与基本概念

 

1、虚拟机概述

所谓的虚拟机,就是一台虚拟的机器。是一款软件,用来执行一系列的虚拟计算指令,大体可将虚拟机分为:

系统虚拟机,程序虚拟机。

 

系统虚拟机:Visual Box、VMare完全是对物理计算机的仿真,提供一个可完整运行操作系统的平台。

程序虚拟机:Java虚拟机,如:HotSpot,专门为了执行单个计算机程序而设计的,java虚拟机执行的是字节码指令。

 

一般系统虚拟机收费标准为:内核、内存、硬盘、带宽等方法进行收费。

 

2、基本概念说明

(1)类加载子系统:负责从文件系统或者网络中加载Class信息,加载后的信息放到方法区内存空间中。

(2)方法区:就是存放类信息、常量信息、常量池信息、包括字符串、数字字面量等。

(3)Java堆:在java虚拟机启动时候建立java堆,他是java程序最主要的工作内存区域,几乎所有的对象实例都放在java堆中,堆是所有线程共享的内存区域。

(4)直接内存:Java的NIO库允许java程序使用直接内存,从而提高性能,通常直接内存的速度会优于java堆。读写频繁的场合会使用。

(5)每个虚拟机的线程都有一个私有的栈,一个线程的java栈在线程创建的时候被创建,java的栈中保存在局部变量、方法参数、同时java方法的调用、返回值等。

(6)本地方法栈和java栈非常类似,最大的不同为本地方法栈用于本地方法的调用。java虚拟机允许java直接调用本地方法。

(7)垃圾收集系统是java的核心,也是必不可少的。java有一套自己的垃圾收集机制,无需开发人员手工清理。

(8)程序计数器:每个线程私有的内存空间。java虚拟机为每个线程创建一个程序计数器。

(9)虚拟机最核心的组件就是执行引擎,他负责执行虚拟机的字节码。

 

二、堆、栈、方法区

 

堆是用来解决数据的存储问题,数据怎么放、放在那儿。

栈用来解决程序的运行问题,程序如何执行,或者说如何处理数据。

方法区则是辅助堆栈的一块永久区(perm),解决堆栈信息产生的先决条件。

 

1、堆

java堆是和应用程序关系最为密切的内存空间,几乎所有的对象都放在其中,并且java堆是完全的自动化管理,通过垃圾回收机制,垃圾对象会自动清理。

 

根据垃圾回收机制的不同,java堆可能拥有不同的结构。最为常见的是将堆分为,新生代、老年代

新生代:存放新生的对象以及年龄不大的对象。

老年代:存放老对象。

 

新生代:分为eden(伊甸园)、s0和s1(也被成为from、to区,两块的大小是相同的,并且可以互换角色空间)

 

绝大对数情况,对象首先分配在eden区,在一次新生代回收之后,如果对象还存活,则会进入s0或者s1区域,之后没经过一次新生代回收,如果对象存活则他的年龄加1,当对象达到一定的年龄之后,则进入老年代(tenured区)。

 

2、java栈

java栈是一块线程私有的内存空间,一个栈一般有3部分组成:局部变量表,操作数栈,帧数据区

 

局部变量表:用于报错函数的参数及局部变量。

操作数栈:主要保存计算过程的中间结果,同时作为计算过程中变量的临时的存储空间。

帧数据区:除局部变量表和操作数栈外,栈还需要一些数据来支持常量池的解析,这里的帧数据区保存着访问常量池的指针,方便程序访问常量池。另外,当函数函数返回或者出现异常时,虚拟机必须有一个异常处理表,方便发送异常的时候找到异常代码,因此异常数据处理表也是栈数据区域的一部分。

 

3、java方法区

java方法区和堆一样,方法区为一块线程共享的数据区域。他保存着系统的类信息,不如类的字段、方法、常量池等。方法区大小决定系统可以保存多少类,如果系统定义太多的类,导致方法区溢出。虚拟机同样会抛内存溢出错误。

 

方法区可以理解为永久区(perm)。

 

 

分享到:
评论

相关推荐

    JVM详细概述与优化大全.zip

    一、JVM概述 Java虚拟机是Java平台的核心组成部分,它负责执行字节码,提供了一个跨平台的运行环境。JVM通过类装载器加载类,解释执行字节码,并管理内存区域,包括堆、栈、方法区等。了解JVM的工作机制对于编写高...

    狂神说JVM探究.rar

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

    jvmjava,java实现的JVM。.zip

    一、JVM概述 Java虚拟机(JVM)是Java平台的核心,它负责执行字节码,提供了内存管理、类加载、垃圾回收等功能,确保了Java的“一次编写,到处运行”的特性。JVM通过解析.class文件中的字节码,将其转换为机器码,...

    JVM基础.doc

    #### 一、JVM概述与HotSpot简介 Java虚拟机(JVM)是Java技术的核心组成部分之一,它为Java程序提供了运行时环境。本节将详细介绍JVM的基本概念及其核心技术——HotSpot。 **HotSpot VM** 是Oracle公司提供的一个高...

    JVM Diagnostics Guide 1.4.2

    1. **JVM概述**:介绍Java虚拟机的原理和作用,包括解释器、编译器、垃圾收集器以及类加载机制。 2. **内存模型**:详细讲解JVM内存结构,如堆内存(Heap)、栈内存(Stack)、方法区(Method Area)、本地方法栈...

    jvm

    #### JVM概述 JVM(Java Virtual Machine)是运行Java字节码的虚拟机,它为Java程序提供了平台独立性,使得Java程序可以在任何支持JVM的平台上运行而无需重新编译。JVM的主要组成部分包括类加载器、运行时数据区、...

    java11-jvm白皮书

    一、JVM概述 Java虚拟机(JVM)是Java平台的核心组成部分,它负责执行Java程序。在Java 11中,JVM继续提供跨平台的兼容性和高效的运行环境。它将Java源代码编译成字节码,然后在运行时动态地解释或即时编译为机器码...

    jvm课程ppt

    一、JVM概述 Java虚拟机作为一个抽象的计算机,它负责解析字节码并执行Java程序。JVM的主要功能包括类加载、动态链接、内存管理、代码执行等。了解JVM的基本架构和工作流程对于理解Java程序的运行机制至关重要。 二...

    jvm原理及调优

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

    jvm.rar_jvm

    1. **JVM概述**: JVM是Java语言的执行引擎,它是Java平台的核心组成部分,负责解释和执行Java字节码。它的设计目标是实现跨平台的“Write Once, Run Anywhere”(一次编写,到处运行)特性。 2. **类加载机制**:...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    一、JVM概述 Java虚拟机是Java应用程序的运行环境,它负责解析字节码并执行程序。JVM的核心功能包括类加载、内存管理、垃圾收集以及线程调度等。理解JVM的工作原理对于提高Java应用的性能至关重要。 二、JVM内存...

    jvm瓶颈定位 java jvm 学习

    1. **JVM概述** - JVM的作用:JVM作为Java程序的运行环境,负责解释执行字节码,提供垃圾回收机制,内存管理和多线程支持。 - 类加载机制:JVM通过类加载器加载类文件,包括启动类加载器、扩展类加载器和应用程序...

    JVM学习笔记(一)

    #### 一、JVM概述与工具使用 JVM(Java Virtual Machine)是Java语言的核心组成部分之一,它为Java程序提供了一个跨平台的运行环境。本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM的各种运行时信息,包括...

    JVM培训ppt

    **一、JVM概述** Java虚拟机允许程序在任何支持Java的平台上运行,实现了“一次编写,到处运行”的目标。JVM主要包括以下几个部分: 1. **类装载器(Class Loader)**:负责加载类文件到JVM中,确保类的唯一性。 2....

    JVM体系结构与GC调优

    1. **JVM概述** - JVM的作用:解释字节码、执行Java程序、内存管理等。 - JVM的主要组件:类加载器、运行时数据区、执行引擎、本地方法接口和本地库。 2. **运行时数据区** - **堆**:所有对象实例都在这里分配...

    java模拟jvm

    一、JVM概述 Java虚拟机是一种抽象的计算机,它执行字节码(.class文件),这是Java源代码经过编译后的中间表示。JVM提供了内存管理、类加载、安全控制等功能,确保Java程序具有跨平台性。 二、堆栈管理 1. **方法...

    mini-jvm使用 Java 8 实现 jvm

    二、mini-jvm概述 mini-jvm是为教育和学习目的设计的,它通过Java 8实现了一个简化的虚拟机模型。这个模型能够解析并执行基于Java字节码的简单程序。通过研究和实现这样一个迷你版本的JVM,开发者可以深入了解JVM的...

    JVM的工作原理及垃圾回收机制介绍

    #### 一、JVM概述及原理 **1.1 JVM概述** Java Virtual Machine (JVM),即Java虚拟机,是一种虚构的计算机,在实际的计算机硬件上仿真模拟出的一套完整的计算机系统,用于执行Java字节码。JVM的设计实现了Java语言...

    JVM知识图谱.pdf

    #### 一、JVM概述与讲师介绍 - **JVM**:Java Virtual Machine,是运行Java字节码的虚拟机环境。 - **讲师介绍**:本课程将由具有多年Java开发经验及JVM研究背景的专业讲师主讲。 #### 二、课程整体介绍 - **目标...

    深入理解JVM

    1. **JVM概述**:Java虚拟机是Java平台的核心组成部分,它负责执行Java字节码,为Java程序提供跨平台的运行环境。JVM的设计目标是实现“一次编写,到处运行”。 2. **类加载机制**:JVM通过类加载器将.class文件...

Global site tag (gtag.js) - Google Analytics