JVM-类加载

1.了解冯诺依曼计算机结构

1.1计算机处理数据过程

(1)取阶段:由输入设备把原始数据或信息输入给计算机存储器存起来

(2)解码阶段:根据CPU的指令集架构(ISA)定义将数值解译为指

(3)执行阶段:再由控制器把需要处理或计算的数据调入运算器

(4)最终阶段:由输出设备把最后运算结果输出

本质上就是CPU取数据指令然后返回

CPU=存储器+运算器+控制器

2.JVM   Java Virtual Machine(Java虚拟机)

Java官网 :Home: Java Platform, Standard Edition (Java SE) 8 Release 8

Reference - > Developer Guides - > 定位到:https://docs.oracle.com/javase/8/docs/index.html

3. JVM到底该学习什么

(1)源码到类文件

(2)类文件JVM

(3)JVM各种折腾[内部结构、执行方式、垃圾回收、本地调用等]

 3.1创建一个类进行编译

package com.example.jvmcase.basic;
class Person {
private String name = "yzt";
private int age;
private final double salary = 100;
private static String address;
private final static String hobby = "Programming"; private static Object obj = new Object();
public void say() {
System.out.println("person say...");
}public static int calc(int op1, int op2) {
op1 = 3;
int result = op1 + op2;
Object obj = new Object();
return result;
}
public static void main(String[] args) {
calc(1, 2);

3.2执行编译命令

 javac -g:vars Person.java --- > Person.class 

3.3编译过程 

Person.java - > 词法分器 - > tokens流 - > 语法分析器 - > 语法树/抽象语法树 

- > 语义分析器 - > 注解抽象语法树 - > 字节码生成器 - > Person.class文件

 4. 类文件到虚拟机(类加载机制) 

类加载机制是指我们将类的字节码文件所包含的数据读入内存,同时我们会生成数据的访问入口的一 种

特殊机制。那么我们可以得知,类加载的最终产品是数据访问入口。

这个时候,看到这张图,我们应该有一个问题,那就是我们的字节码加载的方式,也就是我们的字节 文件可以用什么方式进行加载呢?

4.1加载.class文件的方式 

4.1.1从本地系统中直接加载

4.1.2通过网络下载.class

典型

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

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

相关文章

区间预测 | MATLAB实现基于QRF随机森林分位数回归时间序列区间预测模型

区间预测 | MATLAB实现基于QRF随机森林分位数回归时间序列区间预测模型 目录 区间预测 | MATLAB实现基于QRF随机森林分位数回归时间序列区间预测模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRF随机森林分位数回归时间序列区间预测模型&#xff1…

Dooring-Saas低代码技术详解

hello, 大家好, 我是徐小夕, 今天和大家分享一下基于 H5-Dooring零代码 开发的全新零代码搭建平台 Dooring-Saas 的技术架构和设计实现思路. 背景介绍 3年前我上线了第一版自研零代码引擎 H5-Dooring, 至今已迭代了 300 多个版本, 主要目的是快速且批量化的生产业务/营销过程中…

empty module导致的lvs问题

write_verilog时-exclude empty_modules即可 这里也分享一下ICC2 write lvs netlist的命令 write_verilog -exclude {scalar_wire_declarations leaf_module_declarations empty_modules well_tap_cells filler_cells supply_statements} -hierarchy all -force_no_referenc…

django的ORM模板的fake更新

django存量数据表的migraions记录丢失,若要更新表结构,则需用到fake,否则报错: 解决步骤如下: 1)同步存量表结构,生成伪表 --fake sudo python3 manage.py makemigrations appname sudo pyt…

windows下面的python配置

安装包选择exe后缀的 链接:https://pan.baidu.com/s/1sTzQdHMqI4KZwyJHl79Q3w 提取码:1111 PIP安装脚本 python版本pip安装脚本下载地址n3.6https://bootstrap.pypa.io/pip/3.6/get-pip.py3.7及以上https://bootstrap.pypa.io/get-pip.py 控制面板新…

在react项目中如何引入国际化

原文合集地址如下,有需要的朋友可以关注 本文地址 合集地址 react-i18next 在 React 项目中引入国际化(Internationalization,简称 i18n)可以使用第三方库来实现。其中,最常用且流行的国际化库是 react-i18next&am…

手风琴案例(jQuery)

案例效果 代码实现 jQuery代码(两种方法) 方法一:hover版 $(function () {$(".king li").hover(function() {$(this).addClass("current").siblings().removeClass("current");}, function() {$(".king…

单机部署NGINX

​ 1、找到合适的nginx资源包,可以去官网下载 这里用的是 nginx-1.24.0.tar.gz 2、上传下载下来的nginx软件包,并解压 tar zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0/ 3、安装nginx 编译 ./configure --prefix/usr/local/nginx --with-http_ssl…

哈希表的简单模拟实现

文章目录 底层结构哈希冲突闭散列定义哈希节点定义哈希表**哈希表什么情况下进行扩容?如何扩容?**Insert()函数Find()函数二次探测HashFunc()仿函数Erase()函数全部的代码 开散列定义哈希节点定义哈希表Insert()函数Find()函数Erase()函数总代码 初识哈希…

UG\NX二次开发 获取2D制图视图中可见的对象,并获取类型

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 使用UF_VIEW_ask_visible_objects获取2D制图视图中可见的对象,并获取类型。 下面是将一个六面体以不同的视图投影,获取视图对象和类型的效果。 效果: 1个部件事例,1个体,4条边 1个部件事…

springboot创建并配置环境(一) - 创建环境

文章目录 一、介绍二、启动环境Environment的分析三、进入源码四、创建环境1. 如何确定应用类型2. 测试 一、介绍 在springboot的启动流程中,启动环境Environment是可以说是除了应用上下文ApplicationContext之外最重要的一个组件了,而且启动环境为应用…

MySQL主从复制

1.理解MySQL主从复制原理。 1.1MySQL支持的复制类型 MySQL支持以下几种常见的复制类型: 基于语句的复制(Statement-based Replication,SBR):基于语句的复制是MySQL最早支持的复制方式,它通过复制和执行S…

语义分割训练报UDA error: an illegal memory access was encountered

报错信息如下: terminate called after throwing an instance of ‘c10::Error’ what(): CUDA error: an illegal memory access was encountered Exception raised from create_event_internal at /opt/conda/conda-bld/pytorch_1603729128610/work/c10/cuda/CUDA…

CSS3 实现边框圆角渐变色渐变文字效果

.boder-txt {width: 80px;height: 30px; line-height: 30px;padding: 5px;text-align: center;border-radius: 10px;border: 6rpx solid transparent;background-clip: padding-box, border-box;background-origin: padding-box, border-box;/*第一个linear-gradient表示内填充…

每日一题7.28 209

209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 本题应该是用前缀…

分布式锁面试专题

推荐看的一些文章 1 分布式锁 2 强推: 怎样实现redis分布式锁? 关于分布式锁的选用问题 与大多数工具一样,分布式锁的选择需要根据业务场景确定。 比如在注重性能的场景,比如使用分布式锁 直接使用单机版但是能保证主从复制性质…

C++动态内存管理

目录 C语言中的动态内存管理C动态内存管理动态管理内置类型动态管理自定义类型 new和delete的实现原理operator new和operator delete函数new和delete对内置类型的实现原理new和delete对自定义类型的实现原理 malloc/free和new/delete区别 C语言中的动态内存管理 之前学习了C语…

Nginx系列之 一 负载均衡

目录 一、Nginx概述 1.1 负载均衡概述 1.2 负载均衡的作用 1.3 四/七层负载均衡 1.3.1 网络模型简介 1.3.2 四层和七层负载均衡对比 1.3.3 Nginx七层负载均衡实现 1.4 Nginx负载均衡配置 1.5 Nginx负载均衡状态 1.6 Nginx负载均衡策略 二、负载均衡实战 2.1 测试服…

算法通关村第一关——链表白银挑战笔记

文章目录 两个链表的第一个重合节点判断回文链表 两个链表的第一个重合节点 同LeetCode 160.相交链表 解法一:Hash和Set(集合),此处用Set合适。 把其中一个链表的所有节点引用放入set,再从头遍历另一个链表第一次重合的地方就是答…

Android性能优化之SharedPreference卡顿优化

下面的源码都是基于Android api 31 1、SharedPreference使用 val sharePref getPreferences(Context.MODE_PRIVATE) with(sharePref.edit()) { putBoolean("isLogin", true)putInt("age", 18)apply() } val isLogin sharePref.getBoolean("isLogi…