Java 10 AppCDS启用全流程曝光:为什么你的CDS未生效?

第一章:Java 10 AppCDS 技术背景与核心价值

AppCDS(Application Class-Data Sharing)是 Java 10 引入的一项重要性能优化特性,扩展了原有的 CDS(Class-Data Sharing)机制,允许将应用程序特定的类数据在 JVM 启动时共享,从而显著缩短启动时间并减少内存占用。该技术特别适用于微服务、云原生应用等需要频繁启动 JVM 实例的场景。

技术演进背景

在 Java 10 之前,CDS 仅支持系统类加载器共享核心类库的元数据。AppCDS 进一步支持自定义类加载器和应用类路径中的类,使得企业级应用也能受益于类数据共享。通过将类元数据序列化为归档文件,多个 JVM 实例可共享同一份只读数据,避免重复加载与解析。

核心优势

  • 加快应用启动速度,尤其对 Spring Boot 等大型框架效果显著
  • 降低多实例部署时的总体内存消耗
  • 提升容器化环境下的资源利用率

工作流程简述

AppCDS 的使用分为两个阶段:归档生成与运行时启用。
  1. 启动 JVM 并记录类加载行为
  2. 生成包含类元数据的归档文件
  3. 后续启动时加载归档以实现共享
例如,生成归档的命令如下:
# 第一步:开启类列表记录
java -XX:ArchiveClassesAtExit=hello.jsa -cp hello.jar Hello

# 第二步:使用归档启动
java -XX:SharedArchiveFile=hello.jsa -cp hello.jar Hello
上述指令中,-XX:ArchiveClassesAtExit 指定生成归档文件,JVM 会自动收集本次运行中加载的应用类;第二步通过 -XX:SharedArchiveFile 启用该归档,实现类数据共享。
特性传统模式启用 AppCDS 后
启动时间较长明显缩短
内存占用每个实例独立共享元数据,降低峰值
graph LR A[应用启动] --> B[加载类并记录] B --> C[生成JSA归档文件] C --> D[后续启动加载归档] D --> E[共享类数据,加速初始化]

第二章:环境准备与基础配置

2.1 理解AppCDS的工作机制与JVM加载流程

AppCDS(Application Class-Data Sharing)是JDK 12引入的重要优化特性,旨在通过共享已加载类的元数据来缩短应用启动时间并减少内存占用。
JVM类加载流程回顾
JVM启动时依次执行加载、链接、初始化三个阶段。类文件从磁盘读取、解析并存入方法区,频繁的I/O与解析操作影响启动性能。
AppCDS核心机制
AppCDS在首次运行时将已加载的类元数据归档为共享文件,后续启动直接映射该归档到内存,跳过部分解析过程。

# 生成类列表
java -XX:DumpLoadedClassList=hello.lst -cp hello.jar Hello

# 创建共享归档
java -Xshare:dump -XX:SharedClassListFile=hello.lst \
     -XX:SharedArchiveFile=hello.jsa -cp hello.jar

# 启动使用共享归档
java -Xshare:on -XX:SharedArchiveFile=hello.jsa -cp hello.jar Hello
上述命令分三步完成AppCDS配置:首先记录运行时加载的类,随后生成共享归档文件(JSA),最后启用共享加载。参数`-Xshare:on`强制使用共享数据,若失败则报错。该机制显著降低重复启动开销,尤其适用于微服务等高频部署场景。

2.2 检查JDK版本并验证CDS支持能力

在启用类数据共享(CDS)前,首先需确认当前JDK版本是否支持该特性。大多数现代JDK 8u40+ 及 JDK 11+ 版本均默认支持CDS。
检查JDK版本
执行以下命令查看JDK版本信息:
java -version
输出示例:
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12)
OpenJDK 64-Bit Server VM (build 17.0.1+12, mixed mode, sharing)
注意:末尾的 sharing 表示CDS已启用支持。
验证CDS可用性
可通过运行诊断命令确认CDS功能状态:
java -Xshare:dump
该命令会生成基础归档文件,若执行成功,表明JVM具备CDS写入能力。若提示 Unsupported operation,则可能为JRE环境或缺少权限。
  • JDK版本需 ≥ 8u40 或 ≥ 11
  • 必须使用JDK而非JRE以支持归档生成
  • 某些容器环境需显式挂载临时存储支持

2.3 配置类路径与归档类的预处理准备

在Java应用启动过程中,类路径(Classpath)的正确配置是确保类加载器能够定位并加载所需类文件的关键。JVM通过类路径搜索编译后的.class文件和归档文件(如JAR),因此必须精确指定目录或归档路径。
类路径设置方式
可通过命令行参数-classpath或环境变量CLASSPATH配置:
java -classpath ./lib/*:./classes MyApp
该命令将当前目录下的lib中所有JAR文件和classes目录纳入类路径,适用于依赖较多的项目。
归档类预处理优化
为提升启动性能,可对JAR文件进行索引化处理。使用jar工具生成索引:
jar -i myapp.jar
此操作生成INDEX.LIST,加速类加载器在大型归档中的查找效率。
  • 类路径支持通配符(*),但不递归子目录
  • JAR索引适用于包含大量类文件的单一归档
  • 模块化应用中,推荐使用--module-path替代传统类路径

2.4 使用java -XX:+UnlockDiagnosticVMOptions探针调试

在JVM调优与问题诊断中,`-XX:+UnlockDiagnosticVMOptions` 是开启高级诊断功能的关键开关。它解锁了默认隐藏的VM选项,支持深入探查运行时行为。
常用诊断参数示例
java -XX:+UnlockDiagnosticVMOptions \
     -XX:+PrintGCApplicationStoppedTime \
     -XX:+G1PrintRegionLiveness \
     -XX:CompileCommand=print,*MyClass.myMethod \
     MyApp
上述命令启用GC停顿时间打印、G1区域活跃度输出,并打印指定方法的即时编译详情。`CompileCommand=print` 可查看C1/C2编译器生成的汇编代码(需配合 `-XX:+PrintAssembly`)。
典型应用场景
  • 分析GC暂停来源,定位安全点停顿瓶颈
  • 观察垃圾回收器内部区域状态变化
  • 调试JIT编译优化过程,识别内联失败原因

2.5 构建可复用的测试应用以验证CDS效果

为高效验证CDS(Change Data Capture)机制的准确性与稳定性,构建一个可复用的测试应用至关重要。该应用应能模拟真实业务场景下的数据变更,并自动校验CDC捕获结果。
核心组件设计
测试应用包含三个核心模块:数据生产者、CDS监听器和结果验证器。数据生产者通过预定义模式向数据库写入变更记录;CDS监听器捕获binlog或事务日志;验证器比对原始操作与捕获事件的一致性。
// 示例:Go中模拟插入操作
for i := 0; i < 100; i++ {
    db.Exec("INSERT INTO users (id, name) VALUES (?, ?)", i, fmt.Sprintf("user_%d", i))
}
上述代码批量生成插入事件,用于触发CDS捕获流程。参数i确保主键唯一,fmt.Sprintf构造可追踪的用户名。
验证流程自动化
  • 记录每条DML操作的预期值
  • 从CDS流中提取实际变更事件
  • 对比时间戳、操作类型、字段值是否一致

第三章:生成共享归档文件

3.1 启动应用并生成class list文件

在AOT编译流程中,首先需启动目标应用以捕获其运行时加载的所有类信息。这一阶段的核心任务是生成完整的类列表(class list),为后续静态分析提供输入。
执行启动与类追踪
通过Java代理或调试接口监控类加载过程,记录每个被加载的类名。可使用如下命令启动应用并启用追踪:

java -javaagent:ClassTracer.jar -jar MyApp.jar
该命令加载自定义代理 ClassTracer.jar,在类加载时通过 Instrumentation API 拦截并记录所有类名,最终输出至 class_list.txt。
类列表格式规范
生成的类列表为纯文本文件,每行一个类名,采用JVM内部格式:
  • Ljava/lang/String;
  • [I 表示 int 数组
  • Lcom/example/MyActivity;
此列表将作为下一步静态可达性分析的入口点集合,确保关键类不被遗漏。

3.2 基于class list创建shared archive文件

在Java应用启动性能优化中,共享归档文件(shared archive)可显著减少类加载时间。通过指定class list生成自定义的shared archive,能更精准地包含应用所需类,提升运行效率。
生成class list文件
首先,通过虚拟机参数记录应用运行时加载的类:
java -XX:DumpLoadedClassList=classes.lst MyApp
该命令执行后会生成classes.lst文件,记录所有被加载的类名,供后续归档使用。
创建shared archive
利用上一步生成的列表文件,构建CDS(Class Data Sharing)归档:
java -Xshare:dump -XX:SharedClassListFile=classes.lst -XX:SharedArchiveFile=app.jsa
此命令将classes.lst中的类序列化到app.jsa,形成可复用的共享内存映像。
启用shared archive运行应用
启动时加载归档文件以加速类初始化:
java -Xshare:auto -XX:SharedArchiveFile=app.jsa MyApp
若归档有效且匹配,JVM将直接从共享内存映射类数据,大幅缩短启动时间。

3.3 验证归档文件内容与结构完整性

在完成归档操作后,必须验证归档文件的内容与结构是否完整,以确保数据可恢复且未被损坏。
校验哈希值
通过生成归档文件的哈希值并与原始数据对比,可验证其一致性。常用算法包括 SHA-256。
sha256sum archive.tar.gz
# 输出示例:a1b2c3...  archive.tar.gz
该命令输出归档文件的 SHA-256 校验和,需与源文件归档前的校验和比对,一致则说明内容完整。
检查归档内部结构
使用 tar 命令列出归档内容并验证路径、权限和时间戳:
tar -tzvf archive.tar.gz
参数说明:`-t` 表示列出内容,`-z` 解压 gzip,`-v` 显示详细信息,`-f` 指定文件名。输出应包含所有预期文件及其元数据。
  • 确保无缺失或重复文件
  • 确认目录层级符合预期结构
  • 检查文件权限与时间戳是否保留

第四章:启用AppCDS并验证性能提升

4.1 在启动脚本中正确添加-XX:SharedArchiveFile参数

在Java应用启动过程中,通过配置`-XX:SharedArchiveFile`参数可启用类数据共享(CDS),显著提升启动性能。该参数需指向一个预生成的归档文件,确保JVM能够快速加载核心类。
参数配置示例
java -XX:SharedArchiveFile=app-cds.jsa -Xshare:auto -cp app.jar MainClass
上述命令中,`-XX:SharedArchiveFile=app-cds.jsa`指定共享归档文件路径;`-Xshare:auto`启用共享机制,若文件不可用则降级运行。
常见配置要点
  • 归档文件必须与当前JVM版本兼容
  • 建议在构建阶段预生成jsa文件以避免运行时开销
  • 使用-Xshare:dump可手动创建共享归档

4.2 结合-XX:+UseAppCDS启用应用类数据共享

应用类数据共享机制
通过 -XX:+UseAppCDS 参数可激活应用类数据共享(Application Class Data Sharing),该特性扩展了传统的CDS功能,支持将应用自定义类包含进共享归档文件中,从而在JVM启动时映射到内存,减少类加载时间。
启用步骤与参数配置
首先生成类列表并创建归档:

java -XX:DumpLoadedClassList=app.classes -cp app.jar Hello
java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=app.classes \
     -XX:SharedArchiveFile=app.jsa -cp app.jar
随后运行时启用共享:

java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=app.jsa -cp app.jar Hello
其中,-XX:SharedClassListFile 指定要归档的类列表,-XX:SharedArchiveFile 定义输出的共享归档文件路径。
性能收益对比
配置启动时间(ms)内存占用(MB)
默认850120
启用AppCDS62095
可见,AppCDS显著降低启动延迟与内存开销,尤其适用于微服务冷启动优化场景。

4.3 监控JVM启动日志确认CDS加载状态

在启用类数据共享(CDS)后,验证其是否成功加载至关重要。JVM启动时会输出与CDS相关的日志信息,通过这些日志可确认归档是否被正确映射。
启用详细日志输出
使用以下JVM参数开启CDS相关日志:
-XX:+UnlockDiagnosticVMOptions -XX:+PrintSharedArchiveAndExit -Xlog:class+load=info,cds=debug
该配置将输出类加载来源及CDS归档的加载过程。其中: - -XX:+PrintSharedArchiveAndExit 用于验证归档结构并立即退出; - Xlog 参数分级输出类加载和CDS调试信息。
关键日志特征分析
正常加载时,日志中会出现如下条目:
  • [cds] Loading shared archive from ...:表示归档文件已定位并开始加载;
  • shared class loaded: java.lang.String:表明核心类从共享空间加载;
  • Using shared region.:确认JVM启用了共享内存区域。
若出现 Unable to map CDS archive,则需检查文件权限或版本兼容性。

4.4 对比启用前后启动时间与内存占用差异

在启用懒加载机制前后,应用的启动性能和资源消耗存在显著差异。通过测量典型模块化应用的冷启动时间与初始内存占用,可量化优化效果。
性能对比数据
指标启用前启用后优化幅度
启动时间 (ms)128076040.6%
初始内存 (MB)1459832.4%
关键代码实现
// 路由级懒加载配置
const routes = [
  {
    path: '/dashboard',
    component: () => import('./views/Dashboard.vue') // 动态导入减少首屏加载体积
  }
];
上述代码通过动态 import() 实现组件按需加载,仅在路由激活时加载对应模块,显著降低初始 bundle 大小,从而缩短解析与执行时间。结合 Webpack 的 code splitting,每个异步路由生成独立 chunk 文件,提升整体加载效率。

第五章:常见问题排查与最佳实践总结

日志级别配置不当导致性能下降
在高并发服务中,过度使用 DEBUG 级别日志会显著增加 I/O 负载。建议生产环境使用 INFO 或更高级别,并通过动态配置实现运行时调整。

// 动态设置 Zap 日志级别
var level = zap.NewAtomicLevel()
logger := zap.New(zap.NewJSONEncoder(), zap.AtomicLevelVar(&level))

// 运行时调整
level.SetLevel(zap.InfoLevel) // 切换为 Info 级别
资源泄漏的典型表现与定位
数据库连接未关闭、文件句柄泄漏是常见问题。可通过 pprof 分析 goroutine 和内存使用情况:
  1. 引入 net/http/pprof 包并启动监控端点
  2. 使用 go tool pprof http://localhost:6060/debug/pprof/goroutine 获取快照
  3. 分析阻塞的协程调用栈
微服务间超时传递缺失引发雪崩
当多个微服务串联调用时,若未统一传播超时控制,可能导致上游长时间等待。使用 context.WithTimeout 并逐层传递:

ctx, cancel := context.WithTimeout(parentCtx, 500*time.Millisecond)
defer cancel()

resp, err := client.Do(ctx, req)
if err != nil {
    if ctx.Err() == context.DeadlineExceeded {
        log.Error("request timed out")
    }
}
高频配置更新导致一致性问题
频繁修改配置可能引发短暂的数据不一致。推荐采用版本化配置与原子切换机制:
方案优点适用场景
etcd + watch强一致性金融类服务
本地缓存 + TTL低延迟读多写少场景
数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码) 数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994 立即下载

相关推荐

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科普文:毕昇JDK的AppCDS特性介绍

不打开共享功能,默认为off,但指定此参数后,便可以通过DumpLoadedClassList参数导出ClassList文件导入共享文件,由SharedClassListFile指定需要共享的类列表,由SharedArchiveFile指定导入的JSA文件-Xshare:on使用共享文件,由SharedArchiveFile指定JSA文件尝试Xshare:on,如果失败,自动修改为Xshare:off。

为无为,事无事,味无味。 1439

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

探秘JDK 10:崭新特性悉数解析

Java 10如同一位经历了时光洗礼的程序语言,蕴含着更多的智慧和便利。在这个版本中,Java似乎变得更加现代、更加富有活力。本文将带你进入Java 10的独特世界,一起感受这场编程时代的蜕变。

todoitbo的博客 3780

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

B站李沐讲论文笔记AlexNet

B站李沐讲论文笔记AlexNet

夏知识不进脑子薇的博客 789

Java 10 应用程序类数据共享

Java 10引入了应用程序类数据共享(Application Class-Data Sharing)功能,简称CDS。CDS允许将常用类的元数据存储在共享的归档文件中,以便多个Java进程在启动时共享这些元数据,从而加快应用程序的启动速度和降低内存占用。本教程将介绍Java 10的应用程序类数据共享的用法和优势。

qq_38766930的博客 792

Theil-Sen Median斜率估计和Mann-Kendall趋势分析:以多年NPP数据为例

一、理论 Theil-Sen Median方法又称为Sen斜率估计,是一种稳健的非参数统计的趋势计算方法。该方法计算效率高,对于测量误差和利群数据不敏感,适用于长时间序列数据的趋势分析。其计算公式为: Mann-Kendall(MK)检验是一种非参数的时间序列趋势性检验方法,其不需要测量值服从正太分布,不受缺失值和异常值的影响,适用于长时间序列数据的趋势显著检验。其过程如下:对 于 序 列Xt = x1,x2,⋯xn,先确定所有对偶值( xi , xj ,...

丑唐的修炼之旅 8万+

Java应用启动太慢?试试AppCDS的6步启用流程(附生产环境案例)

Java应用启动太慢?掌握Java 10 AppCDS的使用步骤,通过6步启用流程显著提升启动速度。适用于高频启停、微服务等场景,减少类加载开销,优化运行性能。生产环境实测有效,值得收藏。

CodeVibe的博客 712

光学设计进阶:Zemax中的坐标断点与离轴系统优化

本文深入解析了Zemax中坐标断点的核心原理与实战应用,它是实现离轴光学系统设计的关键。文章通过比喻和实例,详细阐述了如何利用坐标断点作为“方向盘”来精确控制光学元件的偏心和倾斜,实现“前断后接”的局部坐标系变换,从而构建并优化无中心遮拦的离轴反射系统,避免光线失控。

3a9bq4r8t2y的博客 525

Prokka实战:10分钟搞定细菌基因组注释(附详细参数解析)

本文深入解析Prokka细菌基因组注释工具的核心参数与实战策略。通过拆解其集成化工作流程,详细解读物种分类、功能注释、输出控制等关键参数,并提供快速初筛、高质量发表、质粒注释及批量处理四种典型场景的高效参数组合方案,帮助用户精准掌控注释过程,将原始序列转化为有价值的生物学见解。

weixin_29271053的博客 442

Java性能优化的秘密武器:AppCDS如何解决类加载瓶颈?

快速提升Java启动性能,解决类加载瓶颈。通过Java 10 应用类数据共享(AppCDS),在多JVM场景下共享预加载类数据,显著减少启动时间和内存占用。适用于微服务、容器化部署等高频启动环境,优化效果明显,值得收藏。

BytePulse的博客 621

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1011

Java 10 AppCDS的生成步骤(专家级配置方案曝光)

掌握Java 10 AppCDS的生成步骤,有效提升应用启动速度与运行性能。适用于大型Java服务场景,通过类数据共享机制优化内存使用。涵盖dump到加载全流程配置,操作精准高效,专家级方案值得收藏。

FastDebug的博客 262

S7-1200模拟量

将两种不同的金属或合金金属焊接起来,构成一个闭合回路,利用温差电动势来测量温度,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在电动势--热电动势,这就是所谓的塞贝克效应(seebeck effect)。温差越大,热电动势越高。热电偶是有正负极性的,所以需要确保导线连接到正确的极性,否则会造成明显的测量误差。为了使温度补偿达到最佳效果,必须将热电偶模块安装在温度稳定的环境中简述:两种金属,每一种金属随温度变化是不同的,出现温差--由俩金属构成的回路就会有电流经过,因此两端形成热电动势。

王阿妹小天才的博客 2592

三相直流无刷电机(带HALL传感器)BLDC控制一

本案例选择TIM0的CH0/CH1/CH2三个通道接入三路原始hall输出信号。三路TIM_CHx(48)通过配置存入到NIP寄存器(new input pattern,3 bits)内。未完待续。

m0_69929716的博客 406

AppCDS配置全流程曝光:3步实现Java应用冷启动加速40%以上

通过Java 10 应用类数据共享(AppCDS),三步配置即可加速Java应用冷启动40%以上,适用于微服务、容器化等场景。利用类数据共享减少加载开销,提升启动效率,值得收藏。

InstrGap的博客 403

OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发

很多新手刚接触时,会把 Skill 想得很复杂,其实大可不必。OpenClaw 中的每个 Skill,本质就是一套“能力描述 + 执行逻辑”的组合包,简单说就是“告诉 AI 你能做什么、怎么做,它就会调用你”,核心特征可以总结为这几点,好记又实用:核心载体:以文件夹为单位,不管多简单的 Skill,文件夹里都必须有 SKILL.md 文件——这是 AI 识别技能的唯一依据,少了它,再完善的代码也没用;

haolove527的专栏 7027

漫画:毕昇 JDK,重现了 “活字印刷术” 的传奇

作者 |小灰来源 |程序员小灰(ID:chengxuyuanxiaohui)中央处理器,即CPU,包含很多种设计架构。其中最常见的架构有两种,一种是X86架构,一种是ARM架构。这两...

程序人生的博客 771

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk支持arm_漫画:毕昇 JDK,重现了 “活字印刷术” 的传奇

作者 |小灰来源 |程序员小灰(ID:chengxuyuanxiaohui)中央处理器,即CPU,包含很多种设计架构。其中最常见的架构有两种,一种是X86架构,一种是ARM架构。这两种架构有什么不同呢?主要是使用的指令集不一样。X86架构使用CISC指令集,即复杂指令集,最典型的代表就是英特尔处理器。ARM架构使用RISC指令集,即精简指令集,华为的鲲鹏就是基于ARM架构。OpenJ...

weixin_39937412的博客 225

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

揭秘Java 10 AppCDS生成全过程:5步实现应用启动性能提升30%+

掌握Java 10 AppCDS的生成步骤,显著提升应用启动速度。适用于微服务与高并发场景,通过类数据共享减少重复加载,5步完成配置,实测性能提升30%以上。操作简单,效果显著,值得收藏。

QuickDebug的博客 433

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

觉得 Java 启动慢?快来使用 CDS 特性飞速启动~

使用这个存档后的文件,这代表着你需要这样启动应用:java代码解读复制代码。

CXY123654654321的博客 1546

JDK 10的109项新特性

虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的发布节奏,JDK10 已经到达发布候选里程碑阶段。我看过各种关于 JDK10 新特性的博客,但是它们都倾向于关注通过 JEPS 定义的大方面。这篇博文,我将看看是否可以罗列出 JDK10 中已经发生变化的方方面面(包括新增的和剔除的)。有时候,我会做一些关于 Java SE 的报告会。之前我在“ JDK9 的 55 个新特...

浅汐 332

Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java10 的新特性

你好,我是看山。 本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。 从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。 因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。 概述 从 Java10 .

沉潜飞动 3372

JDK10 新特性

JDK10 新特性 想更详细的了解JDK10新特性可以浏览官方介绍 JDK10 新特性目录导航: 局部变量类型推断 将JDK多存储库合并为单储存库 垃圾回收接口 并行Full GC 的G1 应用数据共享 线程局部管控 移除Native-Header Generation Tool (javah) Unicode 标签扩展 备用内存设备上分配堆内存 基于实验JAVA 的JIT...

lzf的博客 640

AppCDS

转载自:https://www.jianshu.com/p/faa64050da56     https://www.jianshu.com/p/890196bf529a    什么是 CDS   CDS 的全称是 Class-Data Sharing,CDS 的作用是可以让类可以被预处理放到一个归档文件中,后续 Java 程序启动的时候可以直接带上这个归档文件,这样 JVM 可以直接将这个归档...

ZERO 965
上一篇: Java并发编程核心技巧(Exchanger超时实战避坑指南)
下一篇: 你真的会用alignas吗?:深入剖析C++11对齐特性的底层机制
FastCompile
博客等级 码龄1年 164粉丝 2015原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值