关闭

Java 虚拟机基本结构介绍

标签: javajvm虚拟机结构存储
1802人阅读 评论(1) 收藏 举报
分类:

java虚拟机的基本结构如图所示:

这里写图片描述

基本的结构有8个


类加载子系统: 主要负责负责加载Class信息,加载的类信息都存放在方法区的类存空间中。 当JVM使用类加载器装载某个类时,它首先要定位对应的class文件,然后读入这个class文件,最后,JVM提取该文件的内容信息,并将这些信息存储到方法区,最后返回一个class实例


方法区:方法区主要存储的是方法,静态成员,常量。方法区中给每个类都规定了空间并且持有this和super的引用。当运行到哪个对象的时候,通过this动态指向该对象,引用该对象的成员变量,然后和方法以及局部变量一起在栈中进行运算。
方法区的大小不必是固定的,默认最小值为16MB,最大值为64MB,JVM可根据应用需要动态调整。同时,方法区也不一定是连续的,方法区可以在一个堆(甚至是JVM自己的堆)中自由分配。


java堆: java堆实在jvm启动的时候就建立的,这块内存区域 存放了对象实例及数组(所有new的对象)也就是 Object object = new Object(); 这里object只是一个引用是放在栈里面的,new Object() 被放在了 堆内存里面,
由于现在收集器都是采用分代收集算法,堆被划分为新生代和老年代。新生代主要存储新创建的对象和尚未进入老年代的对象。老年代存储经过多次新生代GC(Minor GC)任然存活的对象。

垃圾回收系统:垃圾回收系统是jvm的重要组成部分,垃圾回收器 可以直接对 方法区 ,java堆和直接内存进行回收,在其中 java堆则是垃圾回收器的 重点工作区域,对于不在使用的垃圾对象,垃圾回收系统会在后台,查找 标识,并且释放这些不用的垃圾对象


java 栈:每一个线程中都有私有的java栈,一个线程的java栈 在线程被创建的时候就会被创建,java栈中保存着,局部变量,方法参数,并且对象的引用也存在栈中


本地方法栈:本地方法栈用于本地方法调用


Pc寄存器:寄存器是每个线程所有私有的空间,每个线程都会有寄存器,当线程在执行方法是,而这个方法不是本地方法,寄存器就指向当前被执行的指令


执行引擎:执行引擎则是jvm最核心的组件之一,他负责执行字节码

4
0
查看评论

Java虚拟机结构分析

本博文主要介绍了JVM(Java Virtual Machine)的组成部分以及它们内部的工作机制和原理。之前整理过一篇《浅析Java虚拟机和Java内存模型》,写的比较乱,现在重新整理一下。需要注意的是,虽然平时我们用的大多是Sun(现已被Oracle收购)JDK提供的JVM,但是JVM本身是一个...
  • u013256816
  • u013256816
  • 2016-05-23 19:12
  • 8569

JVM结构、GC工作机制详解

题外话:最近在应聘阿里2015暑期实习,感触颇多。机会总是留给有准备的人的,所以平常一定要注意知识的巩固和积累。知识的深度也要有一定的理解,不比别人知道的多,公司干嘛选你?关于JVM和GC,我相信学java的绝大部分人都听过,很多公司的面试官都爱问,一开始我也很头痛,问这么底层干什么,所以我每次面试...
  • tonytfjing
  • tonytfjing
  • 2015-03-15 16:48
  • 41242

jvm虚拟机的五个组成部分解析

1)程序计数器 几乎不占内存,用于取下一条指令 2)堆,所有通过new创建的对象的内存都在堆中分配,堆被划分为新生代和老年代。新生代有进一步划分为 Eden和Survivor区,最后Survivor由FromSpace和ToSpace组成。新建的对象都使用新生代分配内存, Eden空间不足,...
  • xuqiaobo
  • xuqiaobo
  • 2016-08-22 19:29
  • 950

java之jvm学习笔记十三(jvm基本结构)

欢迎装载请说明出处:http://blog.csdn.net/yfqnihao                   &...
  • yfqnihao
  • yfqnihao
  • 2012-12-13 10:43
  • 24715

Java虚拟机详解----JVM内存结构

http://www.cnblogs.com/smyhvae/p/4748392.htm 主要内容如下: JVM启动流程JVM基本结构内存模型编译和解释运行的概念   一、JVM启动流程: JVM启动时,是由java命令/javaw命令来启动的...
  • bluetjs
  • bluetjs
  • 2016-10-20 17:10
  • 7852

JVM的基本结构及其各部分详解(一)

1 java虚拟机的基本结构如图: 1)类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。 ...
  • yangyb123456
  • yangyb123456
  • 2016-12-30 13:53
  • 172

深入理解JVM(1)—Java虚拟机基本结构

最近开始看周志明著的《深入理解Java虚拟机》一书,此书作为Java虚拟机的经典畅销书,果然是非常优秀的,在学习它的过程中逐渐理解了Java运行机理、内存分配与回收等知识,收获颇多。 要学习Java虚拟机,首先要了解其历史与基本构造。Java虚拟机的发展历史不做详述,大家只要知道SunJD...
  • shijing_0214
  • shijing_0214
  • 2016-03-12 15:36
  • 1622

《深入理解java虚拟机》笔记——简析java类文件结构

一直不太搞得明白jvm到底是如何进行类加载的,在看资料的过程中迷迷糊糊,在理解类加载之前,首先看看java的类文件结构到底是怎样的,都包含了哪些内容。  最直接的参考当然是官方文档:The Java® Virtual Machine Specification  我写了一个最简单的java...
  • zhoufenqin
  • zhoufenqin
  • 2016-04-03 15:31
  • 2025

认识Java虚拟机的基本结构

1. Java虚拟机的架构 1)   类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法的内存空间。除了类信息外,方法区中可能还会存放运行时常量池信息,       包括字符串字面量和数字量(这部分常量信息是Cla...
  • owen_william
  • owen_william
  • 2016-03-26 16:48
  • 1464

虚拟化有哪几种架构

一、虚拟化有哪几种架构? 目前分为两种,寄居架构(Hosted Architecture)和裸金属架构 (“Bare Metal” Architecture),如图所示。 寄居架构就是在操作系统之上安装和运行虚拟化程序,依赖于主机操作系统对设备的支持和物理资源的管理; 裸金属架构就是直接在硬件...
  • dragonpeng2008
  • dragonpeng2008
  • 2013-01-30 11:42
  • 10296
    个人资料
    • 访问:112177次
    • 积分:1387
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:3篇
    • 译文:0篇
    • 评论:32条
    博客专栏
    最新评论