jvm底层

逐步细化 

静态链接:静态方法(符号引用)替换为内存指针或者句柄直接引用)

动态链接:程序期间将符号引用替换为直接引用

对象头:

指针压缩:

  -XX:+UseCompressedOops 开启指针压缩

    减少内存消耗;大指针在主内存 缓存间移动数据,占用带宽大 GC压力大

    jvm通过对对象指针存入堆内存时进行压缩编码32位,取到cpu寄存器 解码方式优化35位 

    堆内存大于32g,压缩指针失效,强制使用64位对java对象寻址

       小于4g 不需要启动指针压缩 直接去除高32位地址,使用低虚拟空间

Launcher

 单例 

内存分配

逃逸分析:

   在方法被定义后可能被外部方法引用

     不会逃逸的对象可在栈上分配内存,方法结束时跟随栈内存一起被回收掉

     默认开启- XX:DoEscapeAnalysis  7默认开启

 标量替换:不会逃逸 且对象可进一步分解,jvm不会创建该对象,分解若干成员变量

   -XX:EliminateAllocations

标量与聚合量:标量不能分解掉量,基本数据类型 reference类型

   聚合量:可分解掉量,对象

 堆分配:

内存模型

栈帧内存空间:独立

参数:

-Xms    -Xmx   -Xmn 

-XX:MaxMetaspaceSize元空间max值,默认 -1 不限制

-Xss 栈大小默认1m,值越小栈帧越小,512k,jvm开启线程越多

-XX:MetaspaceSize 元空间初始大小 字节为单位 21M ,到达触发full gc,收集器对该值调整,释放了大量空间则调低,释放很少空间 不超max提高该值

双亲委派:父加载器

类型

引导类加载器:jre的lib核心类

扩展类加载器:ext

应用程序加载器:appClassLoader ,classpath,target包

自定义加载器:

过程

 appClassLoader   urlClassLoader   loadClass(全类名)

findLoadedClass已经加载的类c

    parent.loadClass(name,resolve:false);加锁 sync ;

    父的loadClass (extClassLoader循环调super)

findBootstrapClassOrNull引导类加载器 

   已经加载的类去

findClass(); 可打破双亲委派,跳过super

  urlClassLoader: path 类路径

  ucp.getResource加载类

  defineClass

打破

tomcat

web容器,不同应用程序可能会依赖同一三分库的不同版本;

commonLoader:基本类加载器,class可被tomcat本身及wabapp访问

 sharedLoader:各webapp共享类加载器, 加载路径中class对于所有webapp可见,对tomcat容器不可见

catalinaLoader:tomcat容器私有类加载器,加载路径中class对webapp不可见

webappClassLoader:各webapp私有类加载器,加载路径中的class文件对当前webapp见,每个war有自己的webappClassLoader,互相隔离,不同war包应用引入不同spring版本

原因

沙箱安全机制:自己写的类不会被加载,防止核心api库被随意篡改

避免类重复加载:父已经被加载类该类,没必要再加载一次

全盘委托:

    当一个classload装载一个类时,除非显示使用另一个classloader,该类所依赖及引用的类也由这个classloader载入

自定义类加载器

 继承java.lang.ClassLoader类


public class FindClassLoader {static class MyClassLoader extends ClassLoader{private String classPath;public MyClassLoader(String classPath){this.classPath =classPath;}private byte[] loadByte(String name) throws Exception{name = name.replaceAll("\\.","/");FileInputStream fis = new FileInputStream(classPath+"/"+name+".class");int len = fis.available();byte[] data = new byte[len];fis.read(data);fis.close();return data;}protected Class<?> findClass(String name) throws ClassNotFoundException{try {byte[] data = loadByte(name);//字节数组转class对象,字节数组是class文件读取后最终的字节数组return defineClass(name,data,0,data.length);}catch (Exception e){e.printStackTrace();throw new ClassNotFoundException();}}}public static void main(String[] args) throws Exception{//初始化自定义类加载器 先初始化父类classloader;会把自定义类加载器的父加载器=appClassLoaderMyClassLoader classLoader = new MyClassLoader("读取哪个路径");Class clazz = classLoader.loadClass("类全路径");Object obj = clazz.newInstance();Method method=clazz.getDeclaredMethod("哪个方法",null);method.invoke(obj,null);System.out.println(clazz.getClassLoader().getClass().getName());}}

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

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

相关文章

6.3 BP神经网络

在多层感知器被引入的同时&#xff0c;也引入了一个新的问题&#xff1a;由于隐藏层的预期输出并没有在训练样例中给出&#xff0c;隐藏层结点的误差无法像单层感知器那样直接计算得到。 为了解决这个问题&#xff0c;反向传播&#xff08;BP&#xff09;算法被引入&#xff0…

centos glibc 升级导致系统崩溃

centos 7.9默认的glibc为2.17&#xff0c;因为要安装一些软件&#xff0c;需要升级到glibc 2.18&#xff0c;而从源码进行编译和安装&#xff0c;安装失败&#xff0c;导致系统崩溃。 系统崩溃首先想到的是利用启动盘进行救援&#xff0c;而利用centos 7.9的启动盘始终无法挂载…

【PHP + 代码审计】数组排序算法

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

银行监管报送系统介绍(五):金融统计数据大集中自动化报送系统——PBOC Report

人民银行金融统计数据大集中自动化报送系统&#xff08;简称PBOC Report&#xff09;&#xff0c;是基于现代计算机网络技术应用基础上&#xff0c;由人行总行设置金融统计数据服务器&#xff0c;建立的一个全国统一的金融统计数据库。 人行针对各银行存贷款、中间业务、网点人…

信号处理--基于FBCSP滤波方法的运动想象分类

目录 理论 工具 方法 代码获取 理论 通用空间模式 (CSP) 算法可以用来有效构建最佳空间滤波器区分&#xff0c;然后实现运动想象的数据中的脑电信号的区分。然而&#xff0c;空间滤波器性能的好坏主要取决于其工作频带。如果脑电信号没有经过滤波或者滤波的频带范围不合适…

FPGA使用XADC测量外部模拟输入电压

一、XADC简介 1.1、特性 Xilinx系列的FPGA中都包含了一个内置的XADC&#xff0c;我们可以通过这个XADC进行一些精度不高的外部模拟信号采样以及FPGA片内传感器信号采集。XADC的分辨率为12位&#xff0c;采样率为1MSPS。 1.2、结构框图 两片XADC&#xff0c;ADC A可用于片内…

SpringJPA 做分页条件查询

前言: 相信小伙伴们的项目很多都用到SpringJPA框架的吧,对于单表的增删改查利用jpa是很方便的,但是对于条件查询并且分页 是不是很多小伙伴不经常写到. 今天我整理了一下在这里分享一下. 话不多说直接上代码: Controller: RestController public class ProductInstanceContr…

Apache HTTP服务器(Linux离线编译安装)

Apache HTTP服务器&#xff08;Linux离线编译安装&#xff09; Apache是普通服务器&#xff0c;本身只支持html即普通网页。可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)。 Apache和Tomcat都可以做为独立的w…

8个常见的数据可视化错误以及如何避免它们

在当今以数据驱动为主导的世界里&#xff0c;清晰且具有洞察力的数据可视化至关重要。然而&#xff0c;在创建数据可视化时很容易犯错误&#xff0c;这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可视化示例&#xff0c;并提供如何避免这些错误的建议。 本文总结了…

如何使用PHP和RabbitMQ实现消息队列?

前言 今天我们来做个小试验&#xff0c;用PHP和RabbitMQ实现消息队列功能。 前期准备&#xff0c;需要安装好docker、docker-compose的运行环境。 如何使用docker部署php服务_php如何使用docker发布-CSDN博客 一、安装RabbitMQ 1、创建相关目录&#xff0c;执行如下命令。…

计算机网络⑦ —— 网络层协议

1. ARP协议 在传输⼀个 IP 数据报的时候&#xff0c;确定了源 IP 地址和⽬标 IP 地址后&#xff0c;就会通过主机路由表确定 IP 数据包下⼀跳。然⽽&#xff0c;⽹络层的下⼀层是数据链路层&#xff0c;所以我们还要知道下⼀跳的 MAC 地址。由于主机的路由表中可以找到下⼀跳的…

手撕算法-接雨水

描述 分析 i位置能积累的雨水量&#xff0c;等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。两个dp数组&#xff1a; leftMaxrightMax 其中 leftMax[i] 代表i位置左边的最大高度rightMax[i] 代表i位置右边的最大高度 初始状态&#x…

Python Flask 自定义过滤器

{{ data.list | li2 }} li2就是自定义的 from flask import Flask, render_templateapp Flask(__name__)app.route("/index") def index():data {name: "张三","age": 18,list: [123123, 41, 123]}return render_template("index2.html…

Redis中RDB中的文件写入

RDB文件的创建与载入。 有两个Redis命令可以用于生成RDB文件&#xff0c;一个是SAVE&#xff0c;另一个是BGSAVE. SAVE命令会阻塞Redis服务器进程&#xff0c;直到RDB文件创建完毕为止&#xff0c;在服务器进程阻塞期间&#xff0c;服务器 不能处理任何命令请求: 127.0.0.1:6…

枚举的详解

枚举的讲解 在C语言中&#xff0c;没有内置的枚举&#xff08;enum&#xff09;数据类型&#xff0c;但我们可以使用整数类型来模拟枚举的行为。C99标准之前&#xff0c;C语言使用#define指令来定义枚举&#xff0c;但这种方式并不安全&#xff0c;因为如果枚举值发生变化&…

【matlab程序】海洋资料的获取与分析--AO/NAO

海洋资料的获取与分析 相关数据代码等资料已上传入群中 海洋资料下载和介绍 AO和NAO指数均取自美国气候预测中心&#xff08;Climate Prediction Center, CPC&#xff09;发布的月平均指数&#xff0c;时间跨度为1950-2022年。由于AO和NAO在冬季最强&#xff0c;因此本文选取…

406. 根据身高重建队列(力扣LeetCode)

文章目录 406. 根据身高重建队列题目描述贪心算法代码 406. 根据身高重建队列 题目描述 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &…

阿里云倚天云服务器怎么样?如何收费?

阿里云倚天云服务器CPU采用倚天710处理器&#xff0c;租用倚天服务器c8y、g8y和r8y可以享受优惠价格&#xff0c;阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持&#xff1a; 阿里云倚天云服务…

macOS访问samba文件夹的正确姿势,在哪里更改“macOS的连接身份“?还真不好找!

环境&#xff1a;路由器上需要身份认证的Mini NAS macOS Sonoma 14 这是一个非常简单的问题&#xff0c;但解决方法却藏得比较深&#xff0c;不够直观&#xff0c;GPT也没有给出明确的解决提示&#xff0c;特意记录一下。 macOS很多地方都很自动&#xff0c;有时候让人找不到设…

高中信息技术教资刷题笔记_大题篇

1.选择排序 2. SMTP属于TCP/IP协议体系结构中的哪一层&#xff1f;请列出其通信的三个阶段。 3.高中信息技术课程的基本理念/意义 4.视频作品制作和发布的主要环节 5.信息社会责任内涵及学生表现 6.教学活动意图 ①突出学生的主体地位。材料中&#xff0c;王老师设计的“扮演谍…