读Java性能权威指南(第2版)笔记09_即时编译器下

java性能优化权威指南---即时编译器(Just-in-time,JIT) 目录 1、JIT编译器概览 2、调优入门:选择编译器类型(client、server或者两者同时使用) 1)、优化启动 2)、优化批处理 3)、优化长时间运行的应用 3、java和JIT编译器版本 4、编译器中级调优 1)、调优代码缓存 2)、编译阈值 3)、检测编译过程 5、高级编译器调优 1)、编译线程 2)、内联(默认开启,-XX:+PrintInling) 3)... 阅读详情

 

1. CPU相关代码

1.1. Advanced Vector Extensions

1.1.1. AVX

1.1.2. 2013年,Intel为Haswell以及之后的芯片引入了AVX2

1.1.3. 2016年,Intel又引入了AVX-512指令

1.1.4. JDK 8不支持这些指令

1.1.5. JDK 11支持

1.2. -XX:UseAVX=N

1.2.1. 0

1.2.1.1. 不使用AVX指令

1.2.2. 1

1.2.2.1. 使用Intel AVX 1指令(对于Sandy Bridge和之后的处理器)

1.2.3. 2

1.2.3.1. 使用Intel AVX 2指令(对于Haswell和之后的处理器)

1.2.4. 3

1.2.4.1. 使用Intel AVX-512指令(对于Knights Landing和之后的处理器)

1.3. -XX:UseSSE=N

1.3.1. 支持Intel流SIMD扩展1到4

1.3.1.1. Streaming SIMD Extensions,SSE

1.3.2. 针对奔腾系列处理器的

2. 分层编译的权衡

2.1. 当在内存受限的环境中运行时有理由关闭它

2.2. 给定足够长的预热期,禁用分层编译时的执行情况和开启时应该是差不多的

2.3. javac编译器

2.3.1. 包含额外调试信息的-g标志不会影响性能

2.3.2. 在Java应用程序中使用final关键字并不能更快地编译代码

2.3.3. 用较新的javac版本重新编译通常不会使应用程序更快

2.3.3.1. JDK 11引入了一种新的字符串连接方式,可以比以前的版本更快,但需要重新编译代码才能用

3. GraalVM

3.1. 一个新的虚拟机

3.1.1. 可以运行许多其他语言的代码

3.2. 两个版本

3.2.1. 完全开源的社区版(Community Edition,CE)

3.2.1.1. 社区版比企业版慢

3.2.2. 商用的企业版(Enterprise Edition,EE)

3.3. 对JVM性能有两个重要贡献

3.3.1. 插件技术允许GraalVM生成完全原生的二进制文件

3.3.2. 以常规JVM的模式运行,只是它包含了一个新的C2编译器实现

3.3.2.1. 这个编译器是用Java写的

3.3.2.2. 传统的C2编译器是用C++写的

3.4. -XX:+UnlockExperimentalVMOptions

3.4.1. 默认值是false

3.5. -XX:+EnableJVMCI

3.5.1. 默认值是false

3.6. -XX:+UseJVMCICompiler

3.6.1. 默认值是false

4. 提前编译

4.1. ahead-of-time compilation,简称AOT compilation

4.2. 最初仅在JDK 9的Linux版本中可用

4.2.1. JDK 11时所有平台都可以用了

4.3. 启动速度更快

4.3.1. 目前,应用程序类数据共享给启动性能带来的提升更大,而且它已经是平台完全支持的特性

4.3.2. 提前编译针对的是像REST服务器这样启动时间相对比较长的程序

4.3.2.1. 加载共享库的时间就被较长的启动时间抵消了,提前编译就更有优势

4.4. jaotc工具

4.4.1. 生成一个共享库,其中包含你选出的编译过的类

4.4.2. 然后通过运行参数将共享库加载到JVM中

$ java -XX:+UnlockDiagnosticVMOptions -XX:+LogTouchedMethods \
      -XX:+PrintTouchedMethodsAtExit <other arguments>
java/net/URI.getHost:()Ljava/lang/String;

4.4.5. 为了生成methods.txt文件,需要保存这些输出内容,然后在每一行前添加compileOnly命令并删除方法参数之前的冒号

$ jaotc --compile-commands=/tmp/methods.txt \
    --output JavaBaseFilteredMethods.so \
    --compile-for-tiered \
    --module java.base

4.4.7. /tmp/methods.txt文件中

compileOnly java.net.URI.getHost()Ljava/lang/String;

4.5. 如果不让预编译的方法被C2编译器编译,那么服务器预热后的性能就会比它最终可能达到的性能差

4.6. -XX:+PrintAOT

4.6.1. 在预编译方法被JVM使用时会产生输出

4.6.2. 默认值是false

4.7. 对于比较大的程序有好处

4.8. 对于很小的、快速运行的程序没有帮助,甚至会阻碍它们的运行

5. GraalVM原生编译

5.1. 生成不需要JVM的可执行文件

5.1.1. 是短期程序的理想选择

5.2. 生成的二进制文件启动速度很快,特别是相较于在JVM中运行的程序

5.3. GraalVM优化代码时并没有C2编译器那么激进,所以对于运行得足够久的应用程序,传统的JVM最终会胜出

5.4. GraalVM原生二进制文件在执行期间不会使用C2编译器编译类

5.5. 原生程序的内存占用在开始时比传统JVM少得多

5.5.1. 随着程序的运行和堆的增长,这种内存优势会逐渐消失

Hadoop权威指南(第4版)-OReilly 2016 读书笔记 Hadoop权威指南(第4版)-OReilly 2016-ReadingNotes.md 初识Hadoop 关于MapReduce mapper和reducercombiner* HDFS p48 Hadoop2: HA,备用namenode2种HA共享存储: NFS过滤器QJM(quorum journal manager) p73 副本怎么放 由近到 阅读详情

相关推荐

java 性能权威指南.pdf [美]scott Oaks著

java 性能权威指南.pdf [美]scott Oaks著 是java调优实战的指导书

成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2(二)

成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2(二) 目录 解决问题 资料参考: 解决办法: 相关推荐 解决问题 在导入tensorflow后,进行运算时,出现了红色错误! import tensorflow as...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 1万+

深入理解EtherCAT状态机:从IGH代码看伺服电机如何从‘上电’到‘使能’

本文深入解析EtherCAT状态机的工作原理,重点探讨伺服电机从'上电'到'使能'的状态转换过程。通过分析状态字(Status Word)和控制字(Control Word)的交互机制,结合IGH代码实例,揭示DS402状态机的核心逻辑,帮助工程师解决60%以上的伺服控制问题,提升EtherCAT网络调试效率。

weixin_42549037的博客 288

解决ES内存不足问题-OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU

ES启动不起来,查看日志发现报错 OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, setting it to UseAVX=1。由于使用的mac电脑,将原来的6.4.3改为7.6.0版本该问题解决。将config目录下的jvm.options中。

cccc3517的博客 1134

Autodesk全家桶:从AutoCAD到Maya,设计师必备的7款神器全解析

本文全面解析Autodesk全家桶中的7款设计师必备软件,包括AutoCAD、Revit、Inventor、Fusion 360、Maya和3ds Max等。从二维制图到三维建模,从建筑信息模型(BIM)到影视动画制作,这些工具在工程设计、建筑可视化和数字创意领域展现出强大的协同效应。通过实战案例展示如何整合工作流,显著提升设计效率与项目质量。

weixin_29237635的博客 460

FPGA之全数字锁相环(DPLL)

1. 数字锁相环的基本原理和组成 1.1 锁相环(PLL)的简介 锁相环最开始并不是用在数字电路中,而是模拟短路中。对于模拟电路中的锁相环,大家可以参考这篇文章稍微看一下,数字和模拟只是实现的方法不同,但是原理、步骤还是共同的。关于模拟PLL。可以参考一片文章: http://www.sohu.com/a/190569594_464086 首先在学习数字锁相环之前,我们应该先了解什么是锁相环?锁相...

DBLLLLLLLL的博客 5万+

SIMD---AVX系列

AVX全称Advanced Vcetor Extension,是对SSE的后续扩展,主要分为AVX、AVX2、AVX512三种。在目前常见的机器上,大多只支持到AVX系列,因此其他SIMD扩展指令我们就先不学习了。 1. AVX系列 1.1 AVX AVX使用了16个YMM寄存器,主要针对的是浮点数计算优化,支持32位单精度和64位双精度。AVX将打包长度由SSE的128位扩展为256位。 AVX...

weixin_30784501的博客 1358

华为灵衢UB总线介绍

华为发布"灵衢"(UB)超节点互联协议,旨在构建支持AI大模型计算的基础设施。该协议采用统一内存语义和对等架构,使设备可直接访问远程内存,实现资源池化。技术突破包括2.1微秒超低时延和TB级带宽,支持64节点、52万张昇腾卡的集群互联。相比传统RDMA,"灵衢"更注重系统级资源调度,而非单纯数据传输。华为开放技术规范,推动生态建设,已有厂商开发兼容IP核。"灵衢"可适应x86、RISC-V等架构,未来将扩展至百万卡规模集群。

技术引领业务创新 4415

useAVX2解决能用tfGPU而安装了CPU...

S10100S的博客 316

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

曙光服务器RAID配置避坑指南:MegaRAID SAS 9361-8i实战(含Foreign状态处理)

本文详细解析了曙光服务器搭配MegaRAID SAS 9361-8i控制器的RAID配置全流程,包括RAID0和RAID5的创建、Foreign状态处理及性能优化策略。特别针对磁盘迁移中的Foreign状态问题,提供了系统化的解决方案和高级恢复技巧,助力企业级IT运维提升存储配置的稳定性和可靠性。

weixin_29200741的博客 410

解决ES内存不足问题-OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, se

ES启动不起来,查看日志发现报错 OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, setting it to UseAVX=1 解决办法: 先查找jvm.options文件,然后找到ES的,将-Xms设置为-Xms512m,重启ES即可 [root@sit-jm-vcsms ~]# find / -name jvm.options ##查找jvm.options文件 find: ‘/proc/30725’:

wangmiaoyan的博客 3918

开源网格生成利器Gmsh:从入门到二次开发实战指南

本文详细介绍了开源网格生成工具Gmsh,从基础概念、安装配置到核心功能实战,提供了全面的入门指南。重点阐述了其强大的二次开发能力,通过Python API实现参数化建模、边界层网格生成以及与FEniCS、OpenFOAM等求解器的集成,为有限元分析和计算流体力学仿真提供灵活高效的自动化网格划分解决方案。

weixin_29066781的博客 434

读Java性能权威指南(第2版)笔记07_即时编译器上

如果C1编译器队列已满,那么计划在级别3上编译的方法在等待编译的同时,可以进行级别4的编译。C1编译器得到代码是如何使用的信息之后,会利用这些信息进行优化,然后才开始编译。如果没有额外的CPU周期可用,你能做的就是尽量缩减应用程序的大小。如果C2编译器队列已满,那么队列中的方法会被取出,在级别2上编译。C1编译器有3个级别,所有总共有5个编译级别。不重要的方法可以从级别2或者级别3开始编译。即时编译器是Java虚拟机的核心。编译器不得不“撤销”之前的编译。原生方法封装时发生的编译。在阻塞模式下发生的编译。

lyingSeven的博客 158

Codex 的 AGENTS.md 到底怎么写?前端、后端两套实战模板,照抄就能用

文件名是大写AGENTS.md,放在项目根目录构建、测试、类型检查命令都是可直接复制执行的只写了 Agent 从代码里推断不出来的约定红线规则用了明确的否定句式(禁止/不要/Never)标注了自动生成目录和禁止修改的模块写清了交付要求(改动清单 + 验证命令 + 风险说明)没有任何密钥、密码、连接串整体一页能看完,核心要点 10 条以内每一条都能通过"删掉会不会更容易犯错"的测试一份短小精准的 AGENTS.md,比一份充斥模糊规则的长文件有用得多。

篮球界最会写bug的人;程序猿中打球最菜的人。 606

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

《Tomcat权威指南》第二版学习笔记

本篇是《Tomcat权威指南》第二版学习笔记,Jason Brittain著,英文名是:Tomcat:The Definitive Guide,中国电力出版社,2009.9出版。 在工作中经常使用Tomcat、JBoss、Jetty等Java容器,但都不曾系统的学习总结过,本次拿出一个周末的时间,通过本书,较为系统的学习一下Tomcat,并结合互联网的参考资料,写下这篇学习总结,颇有收获。

Java之旅 2793

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java性能权威指南(第2版)读后总结与感想

语言在不断进化发展、jvm也在不断进化发展,在采用java 8 不变的情况下,使用包含新的垃圾回收算法的jdk,使用新的垃圾回收算法能够获得更好的性能体验。了解不难,学精很难,性能调优不仅仅是技术活,更是一门艺术,需要考虑的场景、判断的条件纷繁复杂,各种开关也会相互影响,使用的不好,还不如采用默认方式。验证、测试自然少不了各种工具,既有原生自带的,也有开源或者商业的第三方工具,在这个方面,介绍的也较详细,能够帮忙我们分析性能问题的源头。有些性能建议是包治百病的,比如,使用更小的对象;

lyingSeven的博客 209

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

读Java性能权威指南(第2版)笔记08_即时编译器中

一旦代码执行到一定次数,就达到了它的编译阈值,编译器就会认为它有足够的信息来编译代码。编译器使用的计数器会随着方法和循环的执行增加计数,但是它们也会随着时间的推移而减少。在Docker容器中运行旧版本的JDK 8会导致自动优化出问题。可用的CPU有限,较少的线程竞争系统资源对性能有益。在当前的JVM中,优化阈值的意义不大。C1编译器和C2编译器有不同的队列。调用次数更多的方法有更高的优先级。需要编译的代码会放在编译队列中。编译器能够进行的最复杂的优化。

lyingSeven的博客 218

【读书笔记】Java性能权威指南 读书笔记

文章目录1.导论2.性能测试方法3, Java性能调优工具3.2 java 监控工具3.2.1 基本信息3.3 性能分析工具3.3.1 采样分析器3.3.2 探查分析器3.3.3 阻塞方法和线程时间线3.3.4 本地分析器3.4 Java任务控制3.4.1 Java飞行记录器4. JIT编译器4.1 编译器介绍4.2 调优入门: 选择编译器类型4.2.1 优化启动4.2.2 优化批处理4.2.3 优化长时间运行的应用4.3 Java和JIT编译器版本4.4 编译器中级调优4.4.1 调优代码缓存4.4.2 

九师兄 745

《Java性能权威指南》学习笔记

英文版《Java Performance The Definitive Guide》,出版于2014年,中文版出版于2016年,相比于《深入理解Java虚拟机》,讲的更加透彻、准确。适合读一遍,然后做长期参考。 作者Scott Oaks是Oracle公司的一位架构师,专注研究Oracle中间件软件的性能。加入Oracle之前,他曾于Sun Microsystem公司任职多年,在多个技术领域都有建树,包括SunOS的内核、网络程序设计、Windows系统的远程方法调用(RPC)以及 OPEN LOOK虚拟窗口

Java之旅 4960

Java性能优化权威指南-JVM概述和监控调优

HotSpot VM主要分为三部分:HotSpot VM运行时、JIT编译器、垃圾回收器。即时编译器和垃圾回收器是可插拔的,可以选择适合自己的。早期的HotSpot VM是32位的,内存限制为4G。但随着现代内存越来越大,HotSpot VM也支持64位。对象的引用从原来占用4字节32位到8字节64位,占用空间大,触发GC解决方案:Java支持指针压缩,可以将64位压缩为32位【其实是35位,因为对象结构中填充部分的存在,对象的开头指针都是8的整数倍,即后面3位都是0,可以不存储。

m0_50149847的博客 983

Java性能优化权威指南

Java性能优化权威指南

hixiaoxiaoniao的专栏 1083

Tomcat权威指南第二版PDF资源下载介绍:全面掌握Tomcat服务器的宝典

Tomcat权威指南第二版PDF资源下载介绍:全面掌握Tomcat服务器的宝典 去发现同类优质开源项目:https://gitcode.com/ 《Tomcat权威指南第二版PDF资源下载》为您提供了一本全面解析Tomcat服务器各方面内容的权威指南,是学习、使用和优化Tomcat的理想选择。 项目介绍 《Tomcat权威指南第二版》是一本深入浅出地介绍Tomcat服务器各方面知识的书籍,包括安装...

gitblog_06726的博客 1049

java优化 pdf_Java性能优化权威指南 PDF扫描[132MB]

Java性能优化权威指南主要为Java SE 和Java EE 应用的性能调优提供建议。主要包括以下几方面:性能监控、性能分析、Java HotSpot VM 调优、高效的基准测试以及Java EE 应用的性能调优。《Java性能优化权威指南》适合所有Java 程序员、系统调优师和系统架构师阅读。Java性能优化权威指南 目录:第1章 策略、方法和方法论 11.1 性能问题的现状 11.2 性能分...

weixin_30679293的博客 1119

Java性能权威指南-总结2

响应时间测试和吞吐量测试(假设后者是基于客户端-服务器模式)之间的差别是,响应时间测试中的客户端线程会在操作之间休眠一段时间。这被称为思考时间。响应时间测试是尽量模拟用户行为:用户在浏览器输入URL,用一些时间阅读返回的网页,然后点击页面上的链接,花一些时间阅读返回的网页,等等。当测试中引入思考时间时,吞吐量就固定了:指定数量的客户端,在给定思考时间下总是得到相同的TPS(少许差别)。基于这点,测量请求的响应时间就变得重要了:服务器的效率取决于它响应固定负载有多快。

weixin_42583701的博客 943

java权威指南电子书下载,Java性能权威指南pdf

市面上介绍Java的书有很多,但专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,使程序如虎添翼。通过阅读本书,你可以:运用四个基本原则大程度地提升性能测试的效果使用JDK中自带的工具收集Java应用的性...

weixin_39633134的博客 380
上一篇: 读Java性能权威指南(第2版)笔记08_即时编译器中
下一篇: 读Java性能权威指南(第2版)笔记10_原生内存
躺柒
博客等级 码龄4年 7004粉丝 1317原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值