zoukankan      html  css  js  c++  java
  • 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方法调用的状态。
  • 相关阅读:
    cshtml折叠
    toggleClass通过切换类实现样式变换
    Spring Initailizr(项目初始化向导)
    @EnableConfigurationProperties + @ConfigurationProperties 注解
    @Component + @ConfigurationProperties 注解
    入门案例(hello-springBoot)
    SSM 项目整合(书籍管理系统)
    SSM 项目整合 (用户管理系统)
    SpringBoot 配置
    SpringBoot 概念
  • 原文地址:https://www.cnblogs.com/mingyi123/p/9383870.html
Copyright © 2011-2022 走看看