认识Java虚拟机的内部体系结构

认识Java虚拟机的内部体系结构

Java虚拟机的内部体系结构也许很少有人去关心,因为对于Java程序员来说,一般只需要跟API打交道就可以了。这些体系结构只是Java虚拟机内部的结构而已。但是如果理解了其内部结构,对于我们开发项目,以及排除系统中的相关故障是由帮助的。

先看看总体结构图,如下:

各部分的主要功能分别是:
1.
类装载子系统:负责Java类型的装载连接以及初始化。Java虚拟机有两种类装载器,启动类装载器和用户自定义类装载器。启动类装载器是JAVA虚拟机实现的一部分,自定义装载器是JAVA程序的一部分。由不同类装载器装载的类将被放在不同的命名空间中。
2.
方法区:方法区主要存储2类信息,一是被装载的类型信息,从class文件流中提取。二是类型中的类(静态)变量。方法区中的信息是所有线程共享的,所以对方法区的数据访问必须设计成为线程安全的。
3.
Java堆:存放java运行时创建的所有类实例或数组。一个java虚拟机实例中只存在一个堆空间,所有线程共享,因此设计程序时也要考虑到多线程访问堆数据的同步问题。
4.
Java栈:每当启动一个新线程,JAVA虚拟机都会创建一个新的JAVA栈,用于保存线程的运行状态。JAVA栈中的数据都是私有的,线程之间不能相互访问各自的栈。当一个线程调用一个方法时,方法的局部变量保存在该线程的栈中。所以方法内创建的局部变量都不存在线程安全问题。
5.
PC寄存器:有叫程序计数器。每个线程都有自己的程序计数器,在线程启动的时候自动创建。PC寄存器里总是保存下一条将被执行的指令的“地址”。
6.
本地方法栈:保存调用本地方法相关的数据。这里基本是一个全新的不受虚拟机限制的区域。

认识Java虚拟机的内部体系结构,布布扣,bubuko.com

时间: 2024-10-22 16:20:19

认识Java虚拟机的内部体系结构的相关文章

《深入Java虚拟机学习笔记》- 第1章 Java体系结构

一.体系结构组成 当编写并运行一个Java程序时,就同时体验了这四种技术.用Java语言编写源代码,编译成Java Class文件,然后再在Java虚拟机上运行class文件.当编写程序时,通过调用类中的方法来访问系统资源.当程序运行的时候,它通过调用class文件中的方法来满足程序的Java API调用. Java程序设计语言 Java Class文件格式 Java应用编程接口 Java虚拟机 二.Java虚拟机 Java虚拟机的主要任务是装载class文件并执行其中的字节码.JVM包含一个类

jvm的内部体系结构浅析--转

jvm全称是Java Virtual Machine(java虚拟机).它之所以被称之为是"虚拟"的,就是因为它仅仅是由一个规范来定义的抽象计算机.我们平时经常使用的Sun HotSpot虚拟机只是其中一个具体的实现(另外还有BEA JRockit.IBM J9等等虚拟机).在实际的计算机上通过软件来实现一个虚拟计算机.与VMWare等类似软件不同,你是看不到jvm的,它存在于内存. 当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例也就随之消亡.如果

java虚拟机理解探索1

以下内容源于个人对<深入java虚拟机>的理解总结 基本概念: java虚拟机可以指一种抽象规范,也可以指一种具体实现,亦可以指一个java虚拟机实例. 虚拟机生命周期: 一个java虚拟机实例的天职是:负责运行一个java程序.当启动一个java程序时,一个虚拟机实例诞生.程序关闭退出,虚拟机实例亦随之消亡.如果在同一台计算机上运行三个java程序,将得到三个java虚拟机实例.每个java程序都运行与它自己的java虚拟机实例中. 一个java虚拟机实例通过调用main()方法来运行一个j

理解Java虚拟机体系结构

1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Java虚拟机,它号称的"一次编译,到处运行"才能有所保障. 1.1 Java程序执行流程 Java程序的执行依赖于编译环境和运行环境.源码代码转变成可执行的机器代码,由下面的流程完成: Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行.Java程序的运行需要Java

理解Java虚拟机体系结构(转)

1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障. 1.1 Java程序执行流程 Java程序的执行依赖于编译环境和运行环境.源码代码转变成可执行的机器代码,由下面的流程完成: Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行.Java程序的运行需要Java虚拟机.J

JAVA虚拟机的生命周期

一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例也就随之消亡.如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例.每个Java程序都运行于它自己的Java虚拟机实例中. Java虚拟机实例通过调用某个初始类的main()方法来运行一个Java程序.而这个main()方法必须是共有的(public).静态的(static).返回值为void,并且接受一个字符串数组作为参数.任

深入理解Java虚拟机到底是什么

摘自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释: 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的

[转]JAVA虚拟机的生命周期

JAVA虚拟机体系结构 JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例也就随之消亡.如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例.每个Java程序都运行于它自己的Java虚拟机实例中. Java虚拟机实例通过调用某个初始类的main()方法来运行一个Java程序.而这个main()方法必须是共有的(public).静态的(static).返

(1) 深入理解Java虚拟机到底是什么?

好文转载:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的.但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了.在本文中,我会写下我对虚拟机的理解.因为能力所限,可能有些地方描述的不够欠当.如果你有不同的理解,欢迎交流. 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜索到