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情况的区域

  • 相关阅读:
    机器学习十大算法之EM算法
    如何利用OpenSSL生成证书
    2018中国云原生用户大会:网易云爆料完整微服务的研发过程
    漫话中文分词
    10分钟快速构建汽车零售看板
    聊一聊整车厂的那些事——售后配件业务
    网易有数的“正确”使用方式——洞察数据中隐藏的故事
    深入浅出“跨视图粒度计算”--3、EXCLUDE表达式
    深入浅出“跨视图粒度计算”--2、INCLUDE表达式
    深入浅出“跨视图数据粒度计算”--1、理解数据的粒度
  • 原文地址:https://www.cnblogs.com/thomas12112406/p/5857460.html
Copyright © 2011-2022 走看看