zoukankan      html  css  js  c++  java
  • java虚拟机和java内存区域概述

    什么是虚拟机,什么是Java虚拟机

    虚拟机

    定义:模拟某种计算机体系结构,执行特定指令集的软件

    系统虚拟机(Virtual Box、VMware),进程虚拟机

    进程虚拟机

    jvm、Adobe FlashPlayer、FC模拟器

    高级语言虚拟机

    JVM 、.NET CLR、P-Code

    java语言虚拟机

    可以执行Java语言的高级语言虚拟机。Java语言虚拟机并不一定就可以称为JVM,譬如: Apache Harmony

    JavaTM虚拟机

    必须通过Java TCK(Technology Compatibility Kit)的兼容性测试的Java语言虚拟机才能称为“javaTM虚拟机”

    JavaTM虚拟机并非一定要执行“java”程序

    业界三大商用JVM:Oracle HotSpot、Oracle Jrockit VM、IBM J9 VM

    Oracle HotSpot虚拟机

    最初由名为 “Longview Technologies” 的小公司开发,后被Sun公司收购。最初并非面向Java语言开发,而是面向Strongtalk语言。

    HotSpot命名来自它的"热点代码探测"技术

    从JDK1.2开始加入Sun(Oracle)JDK,在JDK1.3开始成为Sun(Oracle)JDK的默认实现,在1.4中成为唯一的虚拟机

    在2006年底开始开源,由此建立的OpenJDK项目

    共有设计,私有实现

    本课程中涉及到的内存区域是在《Java虚拟机规范》(JVMS)中定义的概念模型,但是JVMS也同时声明了这些概念不约束虚拟机的具体实现,只是要求虚拟机实现的效果在外部看起来与规范描述的一致即可。

     Java运行时数据区

    在《Java虚拟机规范》中定义了若干种程序运行期间会使用到的存储不同模型数据的区域。

    有一些区域是全局共享的,随着虚拟机启动而创建,随着虚拟机退出而销毁。有一些区域是线程私有的,随着线程开始和结束而创建和销毁。

    是所有Java虚拟机共同的内存区域概念模型

    运行时数据区的划分

     程序计数器(Program Counter Register)

    一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器

    如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空。

    此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域

  • 相关阅读:
    LinkedHashMap源码学习
    HashMap源码学习
    Java中"或"运算与"与"运算快慢的三三两两
    Java源码记录
    SpringBoot系列随笔
    分布式事物
    分布式事物
    部署spring boot + Vue遇到的坑(权限、刷新404、跨域、内存)
    一次使用存储过程游标遇到的坑
    UML简单介绍—类图详解
  • 原文地址:https://www.cnblogs.com/thomas12112406/p/5857460.html
Copyright © 2011-2022 走看看