共享类数据——class data share功能

CDS

  • 前言
  • 定义
  • 创建归档文件
    • 创建基本归档文件
    • 使用归档文件
    • 注意事项
  • 源码中体现

前言

现在系统原来越复杂,代码越来越多,启动程序需要加载大量的class文件,这样大量时间都耗在系统启动上。GraalVM原生镜像和Project CRaC都允许Spring Boot应用程序在几十毫秒内启动。类数据共享CDS是第三种代价最小的方法。JDK10就引入了类数据共享(CDS)。

定义

CDS将类的元数据存储在共享归档文件中(Archive),以便多个java进程启动时共享这些元数据,无需重新加载解析这些类,从而加快应用启动速度降低内存占用。

创建归档文件

创建基本归档文件

//启动时就创建
java -Xshare:dump -XX:SharedArchiveFile=application.jsa -cp <应用程序的类路径>

-Xshare:dump指定创建共享归档文件,-XX:SharedArchiveFile=application.jsa用于指定归档文件的名称,-cp用于指定应用程序的类路径。spring应该这么用

//创建归档文件,应该在应用程序退出时创建
java -Xshare:dump -XX:ArchiveClassesAtExit=application.jsa -cp <应用程序的类路径>
-Dspring.context.exit=onRefresh 启动spring并立即退出,这样就可以创建归档文件

使用归档文件

java -Xshare:on -XX:SharedArchiveFile=application.jsa -cp <应用程序的类路径>

-Xshare:on 启用CDS功能。Oracle默认启用,openjdk需要手动开启,-XX:+UseAppCDS,好可以启动类加载日志了解类加载-Xlog:class+load:file=cds.log

注意事项

  • 类路径应指定为常规非嵌套 JAR 的列表。
  • 应将classpath指定为包含这些类的 JAR列表,并避免使用目录和 * 通配符。

源码中体现

JVM源码包package对应的C++类PackageEntry的_defined_by_cds_in_class_path是一个volatile的bitmap,记录着哪些类路径条目已经被预先加载到CDS共享内存中。每个类路径都有索引对应_classpath_index
Spring 6.1类数据共享 (CDS) 可提高启动速度
spring文档关于CDS
6.1新特性

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

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

相关文章

用指针查找子串

本题要求实现一个字符串查找的简单函数。 函数接口定义&#xff1a; char *search( char *s, char *t ); 函数search在字符串s中查找子串t&#xff0c;返回子串t在s中的首地址。若未找到&#xff0c;则返回NULL。 裁判测试程序样例&#xff1a; #include <stdio.h> #…

React中也许你会用到的Context

文章概叙 本文主要是写React中Context的概念以及使用&#xff0c;请一定搞清楚什么时候使用Context Context的介绍 通常来说&#xff0c;你会通过 props 将信息从父组件传递到子组件。但是&#xff0c;如果你必须通过许多中间组件向下传递 props&#xff0c;或是在你应用中的…

OCC:第一个程序,对话框中显示一个BOX

1. OCC库的获取 从github上获取 gitgithub.com:tpaviot/oce.git&#xff0c;自己编译官网获取二进制包&#xff08;获取下来的只有release 版本的&#xff0c;而且VS版本不一定适合自己&#xff09;官网源码&#xff0c;然后自己编译&#xff08;稍微折腾点&#xff0c;建议按…

自动导入组件unplugin-auto-import和unplugin-vue-components

背景 当我们在Vue项目中使用第三方库或组件时&#xff0c;通常需要手动导入它们并在需要的地方进行注册。这可能会变得繁琐和冗长&#xff0c;特别是当我们使用大量的第三方库或组件时。为了简化这个过程&#xff0c;我们可以使用unplugin-auto-import和unplugin-vue-componen…

阻塞 IO(BIO)

文章目录 阻塞 IO(BIO)模型等待队列头init_waitqueue_headDECLARE_WAIT_QUEUE_HEAD 等待队列项使用方法驱动程序应用程序模块使用参考 阻塞 IO(BIO) 模型 等待队列是内核实现阻塞和唤醒的内核机制。 等待队列以循环链表为基础结构&#xff0c;链表头和链表项分别为等待队列头和…

java继承

访问权限 Java 中有三个访问权限修饰符: private、protected 以及 public&#xff0c;如果不加访问修饰符&#xff0c;表示包级可见。 可以对类或类中的成员(字段以及方法)加上访问修饰符。 类可见表示其它类可以用这个类创建实例对象。成员可见表示其它类可以用这个类的实例…

深入了解UI标签栏设计细节:你不能错过的要点

UI 标签栏的作用有哪些&#xff1f; 导航是移动 UI 中最常见的组成部分&#xff0c;通常放置在 UI 标签栏上&#xff0c;以帮助我们在不同的页面之间切换。UI 标签栏可以保持界面的可控性&#xff0c;并提高可用性。简而言之&#xff0c;UI 标签栏可以加强交互&#xff0c;让用…

轻量Http客户端工具VSCode和IDEA

文章目录 前言Visual Studio Code 的插件 REST Client编写第一个案例进阶&#xff0c;设置变量进阶&#xff0c;设置Token 前言 作为一个WEB工程师&#xff0c;在日常的使用过程中&#xff0c;HTTP请求是必不可少的。我们采用的HTTP工具有如下&#xff1a; Postman Insomnia Ap…

Java 多线程之并行流(parallelStream)

文章目录 一、概述二、使用方法2.1 parallelStream 使用2.2 Stream 方法介绍2.3 简单示例 三、应用示例3.1 示例介绍3.2 简单任务测试结果3.3 复杂任务测试结果3.4 结论 四、完整示例 一、概述 并行流是Java中Stream API的一部分&#xff0c;用于在多核处理器上并行执行流操作。…

综述 2022-Egyptian Informatics Journal:电子健康记录的安全和隐私

Keshta, Ismail, and Ammar Odeh. "Security and privacy of electronic health records: Concerns and challenges." Egyptian Informatics Journal 22.2 (2021): 177-183. https://doi.org/10.1016/j.eij.2020.07.003 被引次数&#xff1a;207 IF 5.2 / JCR Q2

CSS3多列分页属性

CSS3多列 Firefox浏览器支持该属性的形式是-moz-column-count&#xff0c;而基于Webkit的浏览器&#xff0c;例如Safari和Chrome&#xff0c;支持该属性的形式是-webkit-column-count column-count&#xff1a;该属性定义多列文本流中的栏数 语法&#xff1a;column-count:int…

YACS(上海计算机学会竞赛平台)三星级挑战——两数之和

题目描述 给定 n 个整数 a[1]​,a[2]​,⋯,a[n]​&#xff0c;并且保证 a[1​]≤a[2​]≤⋯≤a[n]​ 再给定一个目标值 t&#xff0c;请判断能否找到 a[i]​ 与 a[j]​&#xff0c;ai​aj​t 且 i≠j。 输入格式 第一行&#xff1a;单个整数n&#xff1b; 第二行&#xf…

智能优化算法应用:基于卷尾猴算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于卷尾猴算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于卷尾猴算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.卷尾猴算法4.实验参数设定5.算法结果6.参考文…

C++ 函数重载、操作符重载

依然是温故而知新&#xff0c;不过现在更多的是以此为乐的心态啦。本篇通过代码实例&#xff0c;展示c函数重载相关知识&#xff0c;包括构造函数的重载、操作符重载等。 在构造函数重载中&#xff0c;给大家带来点稍微提升的用法&#xff0c; 看了不吃亏&#xff0c;看了不上当…

如何快速实现地源热泵远程监控

地源热泵远程监控解决方案 一、项目背景 山东省潍坊市盛世花园小区地源热泵项目是一个先进的供暖与制冷系统&#xff0c;旨在为整个小区提供高效且节能的温控服务。该系统主要由地下管道网络、地源热泵单元以及室内分配系统组成。 针对现有的地源热泵系统的管理和监控问题&a…

110基于matlab的混合方法组合的极限学习机和稀疏表示进行分类

基于matlab的混合方法组合的极限学习机和稀疏表示进行分类。通过将极限学习机&#xff08;ELM&#xff09;和稀疏表示&#xff08;SRC&#xff09;结合到统一框架中&#xff0c;混合分类器具有快速测试&#xff08;ELM的优点&#xff09;的优点&#xff0c;且显示出显着的分类精…

【NAM】《NAM:Normalization-based Attention Module》

NeurIPS-2021 workshop 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 Experiments 6 Conclusion&#xff08;own&#xff09; 1 Background and Motivation 注意力机制是近些年视觉领域…

栈与队列part01-算法

栈与队列 今日任务&#xff1a; ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈 1.232.用栈实现队列 232. 用栈实现队列 class MyQueue {//使用两个栈实现先入先出队列//定义两个Stack集合//就已经拥有了这个集合的方法了push pop peek isEmpty等等//但是我们这里是…

WPF组合控件TreeView+DataGrid之DataGrid封装

&#xff08;关注博主后&#xff0c;在“粉丝专栏”&#xff0c;可免费阅读此文&#xff09; wpf的功能非常强大&#xff0c;很多控件都是原生的&#xff0c;但是要使用TreeViewDataGrid的组合&#xff0c;就需要我们自己去封装实现。 我们需要的效果如图所示&#x…

关于mysql的知识体系

关系型数据库&#xff08;二维表&#xff09; 常用的SQL命令分类 管理数据库使用SQL&#xff08;结构化查询语言&#xff09; DDL 数据定义语言 如&#xff1a;CREATE、ALTER、DROP DML 数据操作语言 如&#xff1a;INSERT、UPDATE、DELETE DCL 数据控制语言 如&#xff1a…