• JVM简介


    一、JVM原理

    image

    java编译器只要面向JVM,生成JVM能理解的字节码文件,Java源文件经过编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

    二、JVM运行时数据区

    • 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程私有的
    • 虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程私有的
    • 堆是用来存储对象示例以及数组值的区域,堆中对象需要等待GC回收,是线程共享的
    • 方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域。 在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。
    • 运行时常量池 存放类的固定的常量信息、方法和Field的引用信息等,其空间从方法区中分配
    • 本地方法栈 JVM采用本地方法堆栈来支持native方法的执行,此区域用于存储每个native方法调用的状态。
    内存结构 作用 多线程
    程序计数器 用于指示当前线程所执行的字节码执行到了第几行 线程私有的
    虚拟机栈 JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double)、部分的返回结果以及Stack Frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址 线程私有的
    存储对象示例以及数组值的区域 线程共享的
    方法区 存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等 线程共享的
    运行时常量池 存放类的固定的常量信息、方法和Field的引用信息等,其空间从方法区中分配
    本地方法栈 JVM采用本地方法堆栈来支持native方法的执行,此区域用于存储每个native方法调用的状态。
  • 相关阅读:
    [BZOJ5339] [TJOI2018]教科书般的亵渎
    拉格朗日插值法
    [LOJ#2340] [WC2018] 州区划分
    [洛谷4609] [FJOI2016]建筑师
    [CF960G] Bandit Blues
    [BZOJ2115] [WC2011] Xor
    [Codeforces 809E] Surprise me!
    无需AutoCAD,用C#生成DWG文件
    扩展方法的几点总结
    RedirectStandardOutput
  • 原文地址:https://www.cnblogs.com/mingyi123/p/9383870.html
Copyright © 2020-2023  润新知