JVM原理 HotSpot内存结构

1 简介

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

常见的虚拟机
  • SUN Classic VM: 第一款商用java虚拟机,1996年1月jdk1.0中带的java虚拟机,只能使用纯解释器的方式来执行java代码

  • Exact VM:准确式内存管理,编译器和解释器混合工作以及两级即时编译 ,只在Solaris平台发布

  • HotSport VM: 即时编译,节约了时间和存储,称霸武林。也是目前JDK8.0的默认虚拟机

  • KVM:简单,轻量,高可以执行,主要在手机平台使用

  • JRockit:BEA,世界上最快的java虚拟机,专注服务端应用,oracle收购BEA后,JRockit基本上已经死

  • j9:IBM  Technology for java virtual Machines IT4J

  • dalvik:不能直接指向class文件,寄存器架构,执行dex文件,由class文件转化而来

  • MicrosoftJvm:只能在windows平台运行

JVM 内存模型共分为5个区:
  • 堆(Heap)
  • 方法区(Method Area)
  • 程序计数器(Program Counter Register)
  • 虚拟机栈(VM Stack)
  • 本地方法栈(Native Method Stack)
JVM(hotspot)结构概览如下图所示:

在这里插入图片描述

  • 灰色部分(Java栈,本地方法栈和程序计数器)是线程私有,不存在线程安全问题,橙色部分(方法区和堆)为线程共享区。

2 类加载器

类加载器将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构。

ClassLoader只负责class文件的加载,至于它是否可以运行,则由执行引擎Execution Engine决定
在这里插入图片描述

类加载器分类

**

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值