JVM简介

JVM

1. JVM简介

JVM

  • Java虚拟机(JVM,Java Virtual Machine)是Java平台的一个核心组件,它是一个抽象的计算机。
  • JVM由软件实现,能够在各种物理计算设备上模拟出一个虚拟的计算机环境。
  • 主要作用是为Java字节码提供一个运行时环境,使得Java程序可以在任何安装了兼容JVM的平台上运行,而无需重新编译。

2. JVM内存模型

JAVA内存模型

栈、本地方法栈、程序计数器、堆、方法区
线程私有 : 栈、本地方法栈、程序计数器
线程共享: 堆、方法区


  1. 又称方法栈,线程私有的,线程执行方法是都会创建一个栈,用来存储局部变量表,操作栈、动态链接、方
    法出口等信息。调用方法时执行入栈,方法返回式执行出栈。
  2. 本地方法栈
    与栈类似,也是用来保存执行方法的信息,执行Java方法是使用栈,执行Native(本地方法服务)方法时使用本地方法栈。
  3. 程序计数器
    保存着当前线程执行的字节码位置,每个线程工作时都有独立的计数器,只为执行Java方法服务,执行
    Native方法时,程序计数器为空。

  4. JVM内存管理最大的一块,对被线程共享,目的是存放对象的实例,几乎所有的对象实例都会放在这里,
    当堆没有可用空间时,会抛出OOM异常。根据对象的存活周期不同,JVM把对象进行分代管理,由垃圾回
    收器进行垃圾的回收管理。
  5. 方法区
    又称非堆区,用于存储已被虚拟机加载的类信息、常量、静态变量、
    即时编译器优化后的代码等数据.1.7
    的永久代和1.8的元空间都是方法区的一种实现。
    运行时常量池:运行时常量池是方法区的一部分,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。
相关推荐
2301_8038756112 小时前
PHP 中处理会话数组时的类型错误解析与修复指南
jvm·数据库·python
m0_7436239212 小时前
c++如何批量修改文件后缀名_std--filesystem--replace_extension【实战】
jvm·数据库·python
2501_9142459313 小时前
CSS如何处理CSS变量作用域冲突_利用特定类名重写变量值
jvm·数据库·python
maqr_11014 小时前
MySQL数据库迁移到云端如何保障安全_数据加密与SSL连接配置
jvm·数据库·python
u01091476015 小时前
MySQL如何限制触发器递归调用的深度_防止触发器死循环方法
jvm·数据库·python
weixin_3812881815 小时前
MySQL中如何使用HEX函数转换十六进制_MySQL进制转换函数
jvm·数据库·python
maqr_11015 小时前
HTML怎么生成订单预览_HTML只读订单信息结构【操作】
jvm·数据库·python
2301_8038756115 小时前
如何通过phpMyAdmin给WordPress所有用户发送全站通知_系统表插入
jvm·数据库·python
2301_7775993716 小时前
mysql如何进行数据库容量规划_评估磁盘空间增长趋势
jvm·数据库·python
m0_3776182317 小时前
Redis怎样应对大规模集群的重启风暴_分批次重启节点并等待集群状态恢复绿灯后再继续操作
jvm·数据库·python