JVM 组成

文章目录

    • 概要
    • JVM 是 Java程序的运行环境(java二进制字节码的运行环境)
    • JVM 的主要组成部分
    • 运行流程:
    • 程序计数器
    • 元空间
    • 方法区
    • 常量池
      • 运行时常量池

概要

在这里插入图片描述

JVM 是 Java程序的运行环境(java二进制字节码的运行环境)

好处:
1.一次编写,到处运行
2.自动内存管理,垃圾回收机制

JVM 的主要组成部分

ClassLoader(类加载器)
Runtime Data Area(运行时数据区,内存分区)
Execution Engine(执行引擎)
Native Method Library(本地库接口)

运行流程:

(1)类加载器(ClassLoader)把Java代码转换为字节码
(2)运行时数据区(Runtime Data Area)把字节码加载到内存中,而字节码文
件只是JVM的一套指令集规范,并不能直接交给底层系统去执行,而是有执行引
擎运行
(3)执行引擎(Execution Engine)将字节码翻译为底层系统指令,再交由CPU
执行去执行,此时需要调用其他语言的本地库接口(Native Method Library)来
实现整个程序的功能。

程序计数器

程序计数器:线程私有的,内部保存的字节码的行号。用于记录正在执行的字节
码指令的地址。

javap -verbose xx.class 打印堆栈大小,局部变量的数量和方法的参数。

程序计数器是JVM规范中唯一一个没有规定出现OOM的区域,所以这个空间也
不会进行GC

线程共享的区域:主要用来保存对象实例数组等,当堆中没有内存空间可分配
给实例,也无法再扩展时,则抛出OutOfMemoryError异常。
在这里插入图片描述

  • 年轻代被划分为三部分,Eden区和两个大小严格相同的Survivor区,根据JVM
    的策略,在经过几次垃圾收集后,任然存活于Survivor的对象将被移动到老年
    代区间。
  • 老年代主要保存生命周期长的对象,一般是一些老的对象
  • 元空间保存的类信息静态变量常量编译后的代码

为了避免方法区出现OOM,所以在java8中将堆上的方法区【永久代】给移动到
了本地内存上,重新开辟了一块空间,叫做元空间。那么现在就可以避免掉
OOM的出现了

元空间

在 HotSpot JVM 中,永久代( ≈ 方法区)中用于存放类和方法的元数据以及
量池
,比如Class 和 Method。每当一个类初次被加载的时候,它的元数据都会放
到永久代中。
元空间的本质和永久代类似,都是对 JVM 规范中方法区的实现。不过元空间与
永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因
此,默认情况下,元空间的大小仅受本地内存限制

方法区

  • 方法区(Method Area)是各个线程共享的内存区域
  • 主要存储类的信息、运行时常量池
  • 虚拟机启动的时候创建,关闭虚拟机时释放

常量池

查看字节码结构(类的基本信息、常量池、方法定义) javap -v xx.class
在这里插入图片描述

运行时常量池

常量池是 *.class 文件中的,当该类被加载,它的常量池信息就会放入运行时常量
池,并把里面的符号地址变为真实地址
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588043.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在linux下conda 创建虚拟环境失败的解决方法

报错内容一&#xff1a; Solving environment: failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/conda-forge/noarch/repodata.json> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are…

关系型数据库与非关系型数据库、Redis数据库

相比于其他的内存/缓存数据库&#xff0c;redis可以方便的实现持久化的功能&#xff08;保存至磁盘中&#xff09; 一、关系数据库与非关系型数据库 1.1 关系型数据库 一个结构化的数据库&#xff0c;创建在关系模型基础上一般面向于记录 SQL语句 (标准数据查询语言) 就是一种…

可视化GIS开发:初识地图12大坐标系以及屏幕坐标

hello&#xff0c;我是贝格前端工场&#xff0c;地图在可视化开发中随处可见&#xff0c;地图需要用到坐标来标明位置关系&#xff0c;并映射的屏幕上&#xff0c;我们才能看到&#xff0c;本文先介绍地图中的常用坐标系&#xff0c;欢迎评论区补充&#xff0c;转发和分享。 在…

ubuntu20.04 运行 lio-sam 流程记录

ubuntu20.04 运行 lio-sam 一、安装和编译1.1、安装 ROS11.2、安装 gtsam1.3、安装依赖1.4、下载源码1.5、修改文件1.6、编译和运行 二、官方数据集的运行2.1、casual_walk_2.bag2.2、outdoor.bag、west.bag2.3、park.bag 三、一些比较好的参考链接 记录流程&#xff0c;方便自…

达梦配置ODBC连接

达梦配置ODBC连接 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 下载ODBC包 下载网址&#xff1a;https://www.unixodbc.org/ unixODBC-2.3.0.tar.gz2 编译并…

试过了,ChatGPT确实不用注册就可以使用了!

看到官网说不用登录也可以直接使用ChatGPT 我们来试一下 直接打开官网 默认是直接进入了chatgpt3.5的聊天界面 之前是默认进的登录页面 聊一下试试 直接回复了&#xff0c;目前属于未登录状态&#xff0c;挺好&#xff01; 来试下ChatGPT4 跳转到了登录页面 目前来看gpt4还…

Mybatis——一对多关联映射

一对多关联映射 一对多关联映射有两种方式&#xff0c;都用到了collection元素 以购物网站中用户和订单之间的一对多关系为例 collection集合的嵌套结果映射 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import java.util.List;Data public cla…

Java零基础入门-java8新特性(中篇)

一、概述 ​上几期&#xff0c;我们是完整的学完了java异常类的学习及实战演示、以及学习了线程进程等基础概念&#xff0c;而这一期&#xff0c;我们要来玩点好的东西&#xff0c;那就是java8&#xff0c;我们都知道java8是自2004年发布java5之后最重要且一次重大的版本更新&…

红队笔记11:pWnOS1.0打靶流程解法2-ssh免密登录-rsa私钥破解-shellshock提权(vulnhub)

目录 开头 1.webmin文件泄露漏洞利用-/etc/passwd/ 2.ssh免密登录-私钥伪随机数碰撞&#xff1a; ssh免密登录原理&#xff1a; prng伪随机数生成ssh rsa 私钥公钥密码库 openssl和openssh的关系&#xff1a; ssh登录报错-解决思路-vv 3.提权-内核提权-shellshock提权 内…

Aurora8b10b(1)IP核介绍并基于IP核进行设计

文章目录 前言一、IP核设置二、基于IP核进行设计2.1、设计框图2.2、aurora_8b10b_0模块2.3、aurora_8b10b_0_CLOCK_MODULE2.4、aurora_8b10b_0_SUPPORT_RESET_LOGIC2.5、aurora8b10b_channel模块2.6、IBUFDS_GTE2模块2.7、aurora_8b10b_0_gt_common_wrapper模块2.8、aurora8b10…

特征融合篇 | YOLOv8改进之将Neck网络更换为GFPN(附2种改进方法)

前言:Hello大家好,我是小哥谈。GFPN(Global Feature Pyramid Network)是一种用于目标检测的神经网络架构,它是在Faster R-CNN的基础上进行改进的,旨在提高目标检测的性能和效果。其核心思想是引入全局特征金字塔,通过多尺度的特征融合来提取更丰富的语义信息。具体来说,…

因子数据预处理-去极值和标准化

一. 去极值 因子数据中过大或过小的值会影响分析结果&#xff0c;特别是在回归时&#xff0c;离群值会严重影响因子和收益率之间的相关性估计结果。 因子去极值的处理方法&#xff1a; 确定上下限将上下限外的数据修改为上下限值 常见的去极值方法有三种&#xff0c;分别是…