学习记录之JVM

news/2024/7/27 7:33:21/文章来源:https://blog.csdn.net/qinaye/article/details/135573328

一、JVM内存模型
主要分为程序计数器、虚拟机栈、本地方法栈、堆、方法区(元空间)

1、程序计数器
用于存放下一条指令的一小块内存空间(记录正在执行的字节码地址)

2、虚拟机栈
保存的是方法的栈帧数据。每个方法被执行的时候都会创建一个栈帧,用于存放局部变量表、操作数栈、动态链接方法、返回地址等数据。每个方法的执行过程就是入栈和出栈的过程。

3、本地方法栈
用于管理本地方法执行的空间

4、堆
存放大量对象和数组的空间。又可以分为新生代和老年代,新生代区用于存放刚创建的对象或者是年轻对象,老年代则是存放一直没有被回收的对象。
新生代又可被分为eden、from survivor、to survivor(比例 8:1:1),eden 存放的是刚刚创建的对象,from 和 to 存放的则是至少经历过一次回收且存活下来的对象,当幸存下来的对象达到指定年龄,则被移入老年代。

5、方法区
存放的是类的元数据,包含类的类型数据,域信息、运行时常量池、方法信息

二、JVM类加载机制
主要分为加载、验证、准备、解析、初始化。

1、加载
通过类的全限定名获取.class文件,将这个.class文件内的二进制数据读取出来,转化成方法区内运行时数据结构,在堆中生成一个能代表这个类的class对象,作为方法区这些数据的访问入口。

2、验证
验证class文件的字节码格式是否符合Java虚拟机规范。主要验证的有四点:文件格式验证、元数据验证、字节码验证、符号引用验证。

3、准备
为静态变量分配内存,并设置初始化值。

4、解析
将常量池中的符号引用转换为直接引用。

5、初始化
为类的静态变量赋予真正的数值,对类的变量进行初始化。

三、类加载器
1、启动类加载器

2、扩展类加载器

3、应用程序类加载器

4、双亲委派模式
一个类在收到类加载请求后不会自己尝试加载这个类,而是将这个加载请求委派给父类加载器去完成,其父类加载器又会将这个请求委派给自己爹父类加载器去完成,以此类推,这样所有的类加载都会委派给启动类加载器。当父类加载器无法加载时,则向下委派给自己的子类加载器,直到这个类被加载成功为止。若是找不到这个类,则报异常(ClassNotFoud)

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

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

相关文章

关于html导出word总结一

总结 测试结果不理想,html-to-docx 和 html-docx-js 最终导出的结果 都 差强人意,效果可以见末尾的附图 环境 "electron": "24.3.0" 依赖库 html-docx-js html-docx-js - npm html-to-docx html-to-docx - npm file-saver…

基于DNA的密码学和隐写术综述

摘要 本文全面调研了不同的脱氧核糖核酸(DNA)-基于密码学和隐写术技术。基于DNA的密码学是一个新兴领域,利用DNA分子的大规模并行性和巨大的存储容量来编码和解码信息。近年来,由于其相对传统密码学方法的潜在优势,如高存储容量、低错误率和对环境因素的抗性,该领域引起…

JDK8-JDK17版本升级

局部变量类型推断 switch表达式 文本块 Records 记录Records是添加到 Java 14 的一项新功能。它允许你创建用于存储数据的类。它类似于 POJO 类,但代码少得多;大多数开发人员使用 Lombok 生成 POJO 类,但是有了记录,你就不需要使…

第 2 章 数据结构和算法概述

文章目录 2.1 数据结构和算法的关系2.2 看几个实际编程中遇到的问题2.2.1 问题一-字符串替换问题2.2.2 一个五子棋程序2.2.3 约瑟夫(Josephu)问题(丢手帕问题)2.2.4 其它常见算法问题: 2.3 线性结构和非线性结构2.3.1 线性结构2.3.2 非线性结构 2.1 数据结构和算法的关系 数据 …

使用Qt连接scrcpy-server控制手机

Qt连接scrcpy-server 测试环境如何启动scrcpy-server1. 连接设备2. 推送scrcpy-server到手机上3. 建立Adb隧道连接4. 启动服务5. 关闭服务 使用QTcpServer与scrcpy-server建立连接建立连接并视频推流完整流程1. 开启视频推流过程2. 关闭视频推流过程 视频流的解码1. 数据包协议…

【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决)

【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决) 文章目录 BUG复现调试代码推测原因及改进方案尝试中断时钟供电外设唤醒方式校验码硬件问题 切换到STOP0模式尝试结论和猜想解决方案附录:Cortex-M…

js动态设置关键侦@keyframes

js动态设置关键侦keyframes 1.前置知识 关键侦keyframes规则通过在动画序列中定义关键侦的样式来控制CSS动画序列的中间步骤 keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);} } // from 等价于 0%;to 等价与 100% // 或…

【已解决】C语言进行多线程数据切割查找数据

第一次听到多线程切割,笔者也没听的太懂,但发现多线程数据切割其实就是分出多个线程,进行处理查找数据的事情。而为什么切割呢,就是因为数据不够线程数分的,假如1k个数据,7个线程,这里不能够整除…

RabbitMQ的安装使用

RabbitMQ是什么? MQ全称为Message Queue,消息队列,在程序之间发送消息来通信,而不是通过彼此调用通信。 RabbitMQ 主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,…

蓝桥杯备赛 | 洛谷做题打卡day5

蓝桥杯备赛 | 洛谷做题打卡day5 图论起航,一起来看看深(广)度优先吧 ~ 文章目录 蓝桥杯备赛 | 洛谷做题打卡day5图论起航,一起来看看深(广)度优先吧 ~【深基18.例3】查找文献题目描述 输入格式输出格式样例…

vue知识-04

计算属性computed 注意: 1、计算属性是基于它们的依赖进行缓存的 2、计算属性只有在它的相关依赖发生改变时才会重新求值 3、计算属性就像Python中的property,可以把方法/函数伪装成属性 4、computed: { ... } 5、计算属性必须要有…

MySQl Mybatis

一、MySQL 1.1 概述 1.1.1 MySQL安装 1.1.2 数据模型 1.1.3 SQL简介 1.2 DDL 1.2.1 数据库操作 1.2.2 图形化工具 1.2.3 表结构操作 (一)创建 (二)数据类型 (1)数值类型 age tinyint unsigned——加上…

Kubernetes 集群管理—日志架构

日志架构 应用日志可以让你了解应用内部的运行状况。日志对调试问题和监控集群活动非常有用。 大部分现代化应用都有某种日志记录机制。同样地,容器引擎也被设计成支持日志记录。 针对容器化应用,最简单且最广泛采用的日志记录方式就是写入标准输出和标…

书生·浦语大模型--第三节课笔记--基于 InternLM 和 LangChain 搭建你的知识库

文章目录 大模型开发范式RAGLangChain框架:构建向量数据库构建检索问答链优化建议web 部署 实践部分环境配置 大模型开发范式 LLM的局限性:时效性(最新知识)、专业能力有限(垂直领域)、定制化成本高&#…

测试平台出问题?看我20分钟快速定位!

今天遇到一个问题,感觉挺有意思,处理过程也非常有意义,希望能给大家一个借鉴吧。今天一位小姐姐找到了我们大组长,说测试平台添加自动化测试用例失败,之后我们组长把我拉到了一个群里让我去看一下,硬着头皮…

C++面试宝典第19题:最长公共前缀

题目 编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串""。说明:所有输入只包含小写字母a-z。 示例1: 输入: ["flower", "flow", "flight"]输出: "fl" 示例2: 输入: ["dog",…

如何在Windows 10/11的防火墙中禁止和允许某个应用程序,这里提供详细步骤

想阻止应用程序访问互联网吗?以下是如何通过简单的步骤阻止和允许Windows防火墙中的程序。​ 一般来说,大多数用户永远不需要担心应用程序访问互联网。然而,在某些情况下,你需要限制应用程序访问互联网。 例如,有问题…

vue知识-03

购物车案例 要实现的功能&#xff1a; 1、计算商品总价格 2、全选框和取消全选框 3、商品数量的增加和减少 <body> <div id"app"><div class"row"><div class"col-md-6 col-md-offset-3"><h1 class"text-center…

TinyLog iOS v3.0接入文档

1.背景 为在线教育部提供高效、安全、易用的日志组件。 2.功能介绍 2.1 日志格式化 目前输出的日志格式如下&#xff1a; 日志级别/[YYYY-MM-DD HH:MM:SS MS] TinyLog-Tag: |线程| 代码文件名:行数|函数名|日志输出内容触发flush到文件的时机&#xff1a; 每15分钟定时触发…

【Spring 篇】走进SpringMVC的世界:舞动Web的激情

嗨&#xff0c;亲爱的小白们&#xff01;欢迎来到这篇关于SpringMVC的博客&#xff0c;让我们一起探索这个舞动Web的框架&#xff0c;感受它带来的激情和便利。在这个世界里&#xff0c;我们将学到SpringMVC的概述、开发步骤以及如何快速入门&#xff0c;一切都是如此的令人兴奋…