当前位置: 首页 > news >正文

[JVM] 京东一面~说一下Java 类加载过程

系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。

通过全限定名来加载生成 class 对象到内存中,然后进行验证这个 class 文件,包括文件格式校验、元数据验证,字节码校验等。准备是对这个对象分配内存。解析是将符号引用转化为直接引用(指针引用),初始化就是开始执行构造器的代码 。


文章目录

    • 1. 加载
    • 2. 验证
    • 3. 准备
    • 4. 解析
    • 5. 初始化

在这里插入图片描述

1. 加载

类加载过程的第一步,主要完成下面 3 件事情:

  1. 通过全类名获取定义此类的二进制字节流
  2. 将字节流所代表的静态存储结构转换为方法区的运行时数据结构
  3. 在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口

2. 验证

主要验证文件格式、元数据、字节码以及符号引用。
在这里插入图片描述

3. 准备

准备阶段是正式为类变量分配内存并设置类变量初始值的阶段。

4. 解析

解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用限定符 7 类符号引用进行。
符号引用就是一组符号来描述目标,可以是任何字面量。直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。

5. 初始化

初始化阶段是执行初始化方法 ()方法的过程,是类加载的最后一步,这一步 JVM 才开始真正执行类中定义的 Java 程序代码(字节码)。

声明: 文章内容属于站出巨人的肩膀上进行输出总结

相关文章:

[JVM] 京东一面~说一下Java 类加载过程

系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 通过全限定名来加载生成 class 对象到内存中,然后进行验证这个 class 文件,包括文件格式校验、元数据验证&#xf…...

2023 年 认证杯 小美赛 ABC题 国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 cs数模团队在认证杯 小美赛前为大家提供了许多资料的内容呀&am…...

N-134基于java实现捕鱼达人游戏

开发工具eclipse,jdk1.8 文档截图&#xff1a; package com.qd.fish;import java.awt.Graphics; import java.io.File; import java.util.ArrayList; import java.util.List;import javax.imageio.ImageIO;public class Fishes {//定义一个集合来管理鱼List<Fish> fish…...

MTK联发科MT6762/MT6763/MT6765安卓核心板参数规格比较

MT6762安卓核心板 MTK6762安卓核心板是一款工业级高性能、可运行 android9.0 操作系统的 4G智能模块。 CPU&#xff1a;4xCortex-A53 up to 2.0Ghz/4xCortex-A53 up to 1.5GhzGraphics&#xff1a;IMG GE8320 Up to 650MhzProcess&#xff1a;12nmMemory&#xff1a;1xLP3 9…...

仿ChatGPT对话前端页面(内含源码)

仿ChatGPT对话前端页面&#xff08;内含源码&#xff09; 前言布局样式和Js部分关键点全部源码 前言 本文主要讲解如何做出类似ChatGPT的前端页面。具体我们的效果图是长这样&#xff0c;其中除了时间是动态的之外&#xff0c;其他都是假数据。接下来让我们从布局和样式的角度…...

js粒子效果(一)

效果: 代码: <!doctype html> <html> <head><meta charset"utf-8"><title>HTML5鼠标经过粒子散开动画特效</title><style>html, body {position: absolute;overflow: hidden;margin: 0;padding: 0;width: 100%;height: 1…...

程序员必备工具篇 / 程序员必备基础:Git

前言 掌握 Git 命令是每位程序员必备的基础,之前一直是用 smartGit 工具,直到看到大佬们都是在用 Git 命令操作的,回想一下,发现有些 Git 命令我都忘记了,于是写了这篇博文,复习一下~ https://github.com/whx123/JavaHome 公众号:顺哥轻创 文章目录 Git 是什么?Git …...

MacBook使用指南

一、安装及卸载Windows系统 1、卸载Windows系统 步骤① 点击下侧任务栏中的“启动台”&#xff0c;进入程序坞&#xff0c;点击"其他",选择“启动转换助理” 步骤② 点击“继续”&#xff0c;接着点击“恢复”&#xff0c;即可卸载Windows系统 2、安装Windows系统 …...

数据库的事务的基本特性,事务的隔离级别,事务隔离级别如何在java代码中使用,使用MySQL数据库演示不同隔离级别下的并发问题

文章目录 数据库的事务的基本特性事务的四大特性(ACID)4.1、原子性&#xff08;Atomicity&#xff09;4.2、一致性&#xff08;Consistency&#xff09;4.3、隔离性&#xff08;Isolation&#xff09;4.4、持久性&#xff08;Durability&#xff09; 事务的隔离级别5.1、事务不…...

Robust taboo search for the quadratic assignment problem-二次分配问题的鲁棒禁忌搜索

文章目录 摘要关键字结论研究背景1. Introduction 常用基础理论知识2. The quadratic assignment problem3. Taboo search3.1. Moves3.2 Taboo list3.3. Aspiration function3.4. Taboo list size4. Random problems5. Parallel taboo search 研究内容、成果7. Conclusion 潜在…...

Linux:创建进程 -- fork,到底是什么?

相信大家在初学进程时&#xff0c;对fork函数创建进程一定会有很多的困惑&#xff0c;比如&#xff1a; 1.fork做了什么事情?? 2.为什么fork函数会有两个返回值?3.为什么fork的两个返回值&#xff0c;会给父进程谅回子进程pid&#xff0c;给子进程返回0?4.fork之后:父子进…...

基于SpringBoot+vue的token验证

后端&#xff1a; 1&#xff0c;写一个验证token的拦截器 import com.fasterxml.jackson.databind.ObjectMapper; import com.ffyc.news.model.CommonData; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; impor…...

Clickhouse设置多磁盘存储策略

设置多磁盘存储 clickhouse安装完成以后&#xff0c;配置了一个默认的存储空间&#xff0c; 这个只能配置一个目录&#xff0c;如果要使用多个磁盘目录&#xff0c;则需要配置磁盘组策略 查看当前的存储策略 select name, path, formatReadableSize(free_space) as free, fo…...

Python开发运维:Django 4.2.7 使用Celery 5.3.5 完成异步和定时任务

目录 一、实验 1.Django使用Celery完成异步和定时任务 二、问题 1. 如何查看Django版本 一、实验 1.Django使用Celery完成异步和定时任务 (1)安装Django (2)新建Django项目 (3)初始框架 (4)urls.py引用视图views from django.contrib import admin from django.urls imp…...

媒体增加日活量的有效策略

随着数字媒体的蓬勃发展&#xff0c;提高日活量成为媒体平台追求的重要目标之一。日活量的增加不仅意味着更广泛的影响力&#xff0c;还能为媒体平台带来更多的商业机会。以下是一些有效的策略&#xff0c;可帮助媒体提高日活量&#xff1a; admaoyan猫眼聚合 内容优质化&#…...

es6新特性总结

1、支持了let和const&#xff0c;为了防止var声明变量带来的变量提升 &#xff08;1&#xff09;、存在块级作用域不存在变量提升&#xff08;考虑暂时性死区&#xff09; &#xff08;2&#xff09;、不允许重复声明&#xff08;包括普通变量和函数参数&#xff09;变量提升…...

Spring Boot + hutool 创建海报图片

Spring Boot hutool 创建海报图片 /*** 分享,生成图片* param id* return*/GetMapping("/getShareImg")public void getShareImg(String id,HttpServletResponse response) throws IOException {CouponConsignSaleClassify byId couponConsignSaleClassifyService…...

0002Java程序设计-springboot在线考试系统小程序

文章目录 **摘 要****目录**系统实现开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘 要 本毕业设计的内容是设计并且实现一个基于springboot的在线考试系统小程序。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&…...

Linux(Centos)上使用crontab实现定时任务(定时执行脚本)

场景 Windows中通过bat定时执行命令和mysqldump实现数据库备份&#xff1a; Windows中通过bat定时执行命令和mysqldump实现数据库备份_mysqldump bat-CSDN博客 上面讲windows中使用bat实现定时任务的方式&#xff0c;如果是在linux上可以通过crontab实现。 cron是服务名称。…...

【Leetcode合集】20. 有效的括号

20. 有效的括号 20. 有效的括号 代码仓库地址&#xff1a; https://github.com/slience-me/Leetcode 个人博客 &#xff1a;https://slienceme.xyz 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串…...

嵌入式系统模型检查与执行时间分析技术

1. 模型检查与可达性分析基础在嵌入式系统开发中&#xff0c;形式化验证技术正变得越来越重要。模型检查作为其中的关键技术之一&#xff0c;能够系统地验证系统是否满足特定的时态逻辑规范。让我们从一个实际案例开始理解这个概念。案例&#xff1a;汽车刹车系统验证想象一个电…...

FPGA与ASIC设计优化:可移植性策略与实践

## 1. FPGA与ASIC设计优化概述现代数字系统设计中&#xff0c;FPGA和ASIC是两种关键实现方式。FPGA凭借其可重构特性&#xff0c;在原型验证和小批量产品中占据主导地位&#xff1b;而ASIC在大规模量产时展现出显著的性能和成本优势。本指南将深入探讨如何构建兼顾FPGA高效性和…...

DeepSeek-OCR-2轻松上手:解决文字识别痛点,提升工作效率实测

DeepSeek-OCR-2轻松上手&#xff1a;解决文字识别痛点&#xff0c;提升工作效率实测 1. 为什么你需要一个更好的OCR工具 如果你经常需要处理纸质文档、扫描件或者图片里的文字&#xff0c;肯定遇到过这样的烦恼&#xff1a;识别出来的文字错漏百出&#xff0c;格式乱七八糟&a…...

2026 年 Rust 异步 HTTP 首选:reqres,轻量、高效、开箱即用

在 Rust 异步网络开发越来越主流的今天&#xff0c;一款好用的 HTTP 客户端直接决定开发效率与项目稳定性。市面上的库要么太重、要么配置繁琐、要么功能残缺&#xff0c;而我自研的 reqres——基于 Tokio 打造的纯 Rust 异步 HTTP 客户端&#xff0c;就是为解决这些痛点而生。…...

FPGA与OpenMAX协同加速嵌入式多媒体系统

1. FPGA与OpenMAX在嵌入式多媒体系统中的协同加速架构在实时视频处理、医疗影像分析等嵌入式多媒体应用场景中&#xff0c;系统需要在严格的时间窗口内完成海量数据计算。传统CPU架构往往难以满足这类场景的实时性要求&#xff0c;而专用硬件加速方案则面临开发周期长、灵活性差…...

南北阁 Nanbeige 4.1-3B 开源模型应用:政务问答系统本地化部署实践

南北阁 Nanbeige 4.1-3B 开源模型应用&#xff1a;政务问答系统本地化部署实践 想体验一个能流畅对话、还能“看见”它思考过程的本地AI助手吗&#xff1f;今天&#xff0c;我们就来聊聊如何将南北阁&#xff08;Nanbeige&#xff09;4.1-3B这个轻量又聪明的国产模型&#xff…...

影刀RPA自动化上架前的数据准备怎么实现“真自动化”?AI+类目属性映射方案解析

在电商多平台矩阵铺货的实战中&#xff0c;许多团队引入了自动化工具&#xff0c;初衷是为了提升效率。但当业务真正跑起来后&#xff0c;往往会遇到一个尴尬的瓶颈&#xff1a;上架动作虽然自动化了&#xff0c;但上架前的数据准备依然是纯人力的“泥潭”。为了让流程跑通&…...

避开Fluent计算崩溃:用这3种网格划分策略彻底解决floating error问题

避开Fluent计算崩溃&#xff1a;3种网格划分策略彻底解决floating error问题 在CFD仿真工程师的日常工作中&#xff0c;没有什么比看到"floating point error"这个报错更令人沮丧的了。这个看似简单的错误提示背后&#xff0c;往往隐藏着复杂的数值计算问题。根据我们…...

3大核心问题深度解析:PMX到VRM转换的终极解决方案

3大核心问题深度解析&#xff1a;PMX到VRM转换的终极解决方案 【免费下载链接】VRM-Addon-for-Blender VRM Importer, Exporter and Utilities for Blender 2.93 to 5.1 项目地址: https://gitcode.com/gh_mirrors/vr/VRM-Addon-for-Blender 面对PMX到VRM模型转换中的骨…...

告别sudo!手把手教你在Linux服务器上为普通用户安装Node.js(含CentOS/Ubuntu保姆级教程)

告别sudo&#xff01;Linux服务器非root用户部署Node.js全指南 在共享开发环境或企业级服务器中&#xff0c;开发者常面临一个典型困境&#xff1a;需要最新版Node.js环境但缺乏sudo权限。想象这样一个场景——你刚接手一个云服务器上的Node项目&#xff0c;发现系统预装的Node…...