当前位置: 首页 > news >正文

购物网站设计的目的html简单登录页面代码

购物网站设计的目的,html简单登录页面代码,网址大全12306,制作单页网站教程目录 一、方法内联 二、循环展开 三、分支预测 四、逃逸分析 4.1 栈上分配 4.2 标量替换 4.3 同步消除 五、冗余消除 JVM中的即时编译器#xff08;如HotSpot的C1、C2编译器#xff09;会对代码进行即时编译优化#xff0c;即时编译优化#xff08;Just-In-Time Compi…         目录 一、方法内联 二、循环展开 三、分支预测 四、逃逸分析 4.1 栈上分配 4.2 标量替换 4.3 同步消除 五、冗余消除 JVM中的即时编译器如HotSpot的C1、C2编译器会对代码进行即时编译优化即时编译优化Just-In-Time Compilation Optimization是Java虚拟机JVM为了提升运行时性能而采取的一种策略。 即时编译优化主要包括以下几个方面下面来详细介绍一下 一、方法内联 目前主流的商用Java虚拟机里Java程序都是通过解释器进行解释执行的当虚拟机发现某个方法或代码块的运行特别频繁就会把这些代码认定为“热点代码”为了提高热点代码的执行效率在运行时虚拟机将会把这些代码编译成本地机器码并以各种手段尽可能地进行优化被称为方法内联。 通过这种方式来减少栈帧的创建和销毁以及参数传递等操作从而减少方法调用的开销提高性能。 然而方法内联并非总是有益的如果内联后的代码量过大可能会导致内存占用增加并且会降低JIT编译速度。因此JIT编译器通常会根据一些策略判断是否以及如何进行内联例如考虑方法大小、调用频率、方法体复杂度等因素。 二、循环展开 循环展开是一种代码优化技术它发生在Java虚拟机JVM在运行时将热点代码即频繁执行的字节码转化为机器码的过程中。循环展开的具体做法是将循环体内的部分或全部迭代复制多次从而减少循环控制结构的开销。 例如原始的循环代码可能是这样的 for (int i 0; i loopCount; i) {// 执行某些操作... } 经过循环展开后可能变成如下形式 int unrolledLoopCount loopCount / UNROLL_FACTOR; for (int i 0; i unrolledLoopCount; i) {// 执行某些操作...// 执行相同的操作...// ...重复UNROLL_FACTOR次 }// 如果loopCount不能整除UNROLL_FACTOR则处理剩余迭代次数 if (loopCount % UNROLL_FACTOR ! 0) {for (int i unrolledLoopCount * UNROLL_FACTOR; i loopCount; i) {// 执行剩余的迭代次数} } 循环展开带来的潜在优势 降低循环控制的开销减少了判断循环条件和更新循环变量的操作。提高指令级并行性对于支持多核处理器和超标量架构的系统来说展开后的循环可以提供更多的并发执行机会。增强缓存局部性当循环体内的操作涉及到内存访问时循环展开有可能提高数据在CPU缓存中的命中率从而加速执行速度。 过度的循环展开可能导致代码膨胀、寄存器压力增大以及缓存效率下降等问题因此编译器通常会根据循环的特征、目标平台的特点以及性能分析结果来智能地选择是否以及如何展开循环。 三、分支预测 即时编译的分支预测优化是 Java 虚拟机JVM在运行时对热点代码进行性能优化的一种技术特别是在即时编译器Just-In-Time Compiler, JIT阶段。分支预测是一种处理器级别的策略用于猜测程序中的条件分支指令可能执行的路径并预先加载相应的指令序列以减少实际跳转带来的延迟。 在即时编译中编译器不仅会考虑 CPU 硬件的分支预测功能还会根据已有的运行信息和特定算法来进行更精确的分支预测优化。 四、逃逸分析 逃逸分析的基本原理是分析对象动态作用域当一个对象在方法里被定义后他可能被外部方法引用例如作为调用参数传递到其他方法这种称为方法逃逸甚至还有可能被外部线程访问到譬如赋值给可以在其他线程中访问的实例变量这种称为线程逃逸从不逃逸、方法逃逸到线程逃逸称为对象由低到高的不同逃逸程度。 如果能证明一个对象不会逃逸到方法或线程外或者逃逸程度比较低(只逃逸出方法而不会逃逸出线程)则可能为这个对象实例采取不同程度的优化。 4.1 栈上分配 在 Java 虚拟机中Java 堆上分配创建对象的内存空间几乎是常识Java 堆中的对象对于各个线程都是共享和可见的只要持有这个对象的引用就可以访问到堆中存储的对象数据。 虚拟机的垃圾收集子系统会回收堆中不在使用的对象但回收动作无论是标记筛选出可回收对象还是回收和整理内存都需要耗费大量资源。 如果确定一个对象不会逃逸出线程之外那让对象在栈上分配将会是一个不错的选择对象所占用的内存空间就可以随栈帧出栈而销毁。 在一般应用中完全不会逃逸的局部对象和不会逃逸出线程的对象所占的比例是很大的如果能使用栈上分配那大量的对象就会随着方法的结束而自动销毁垃圾收集子系统的压力会下降很多。栈上逃逸可以支持方法逃逸但不支持线程逃逸。 4.2 标量替换 若一个数据已经无法再分解成更小的数据来表示了Java虚拟机中的原始数据(int、long等数值类型及reference类型等)都不能在进一步分解了那么这些数据就可以被称为标量。 相对的如果一个数据可以继续分解被称为聚合量Java对象就是典型的聚合量。如果把一个Java对象拆散根据程序访问情况将其用到的成员变量恢复为原始类型来访问这个过程称为标量替换。 假如逃逸分析能证明一个对象不会被方法外部访问并且这个对象可以拆散那么程序真正执行的时候将可能不去创建这个对象而改为直接创建它的若干被这个方法使用的成员变量来替代。 将对象拆分后除了可以让对象的成员变量在栈上分配和读写外还可以为后续进一步优化创建条件。标量替换可以视作栈上分配的一种特例实现更简单但对逃逸程度的要求更高它不允许对象逃逸出方法范围内。 Jdk6 才开始初步支持逃逸分析。一直到 Jdk7 时这项优化才成为服务端编译器默认开启的选项。如果需要或者确认对程序运行有益用户可以使用参数 --XX:DoEscapeAnalysis 来手动开启逃逸分析开启之后可以通过参数 -XX:PrintEscapeAnalysis 来查看分析结果。有了逃逸分析之后可以使用参数 -XX:EliminateAllocations 来开启标量替换使用 XX;EliminateLocks 来开启同步消除。 4.3 同步消除 线程同步本身是一个相对耗时的过程如果逃逸分析能够确定一个变量不会逃逸出线程无法被其他线程访问那么这个变量的读写肯定就不会有竞争对于这个变量实施的同步措施也就可以安全地消除掉。 五、冗余消除 冗余消除是一种优化技术用于减少生成的机器码中的不必要的重复计算和指令。在运行时JIT 编译器会对热点代码即频繁执行的代码段进行分析并尝试找出那些可以提前计算、存储结果并在后续执行中复用的情况或者发现那些总是产生相同结果的条件检查和分支等。 冗余消除的具体形式包括 循环不变量外提将循环内部不会变化的计算移动到循环外部避免每次迭代都进行相同的计算。常量折叠与代数简化识别出已知的常量表达式并预先计算它们的结果或对代数表达式进行简化。死代码删除移除那些无论如何都不会被执行到的代码。公共子表达式消除如果一个表达式的值已经被计算过那么之后再次遇到该表达式时就可以直接使用之前的结果而不是重新计算。数组边界检查消除对于确定安全的数组访问编译器可以消除每次数组元素访问时的边界检查。 通过这些冗余消除技术即时编译器能够提高程序的运行效率减少CPU周期和内存访问次数进而提升应用程序的整体性能。 总结即时编译优化对于 Java 应用的性能至关重要尤其是针对长时间运行且有大量热点代码的应用场景通过合理配置 JVM 参数及深入了解即时编译机制可以在一定程度上有效提升系统整体性能。 往期经典推荐 JVM垃圾收集器你会选择吗-CSDN博客 JVM内存模型深度解读-CSDN博客 一文看懂Nacos如何实现高效、动态的配置中心管理_nacos配置中心-CSDN博客 TiDB内核解密揭秘其底层KV存储引擎如何玩转键值对-CSDN博客 领航分布式消息系统一起探索Apache Kafka的核心术语及其应用场景-CSDN博客
http://www.zqtcl.cn/news/814397/

相关文章:

  • 网站导航栏下载网页自助建站
  • 新手建立网站的步骤建设企业网站个人网银
  • 俄罗斯女孩制作论文网站wordpress和hexo
  • 南宁市网站设计wordpress主题安装教程
  • 网站取消备案怎样做国外电子商务网站
  • 学校建设网站费用申请青岛平台公司
  • 平面设计师个人网站怎样登录韵网网站
  • 怎么用eclipse做网站开发推广平台取名字
  • 深圳建网站服务商广东佛山建网站
  • 网站推广公司卓立海创英文网站建设需求
  • 无锡网站营销公司简介最专业网站建设公司首选
  • 中文网站建设小组ios开发者账号申请
  • 月熊志网站福州建网站 做网页
  • 不同的网站有不同的风格宁波设计网站公司
  • 学校网站制作平台电子政务门户网站建设代码
  • 产品推广的网站怎么做网站标题与关键词
  • 青蛙网站建设wordpress修改logo
  • 网站套餐方案引擎搜索对人类记忆的影响
  • 滨州市滨城区建设局网站扎金花网站怎么做
  • 网站开发中视屏怎样编辑到网页上常州建站公司模板
  • 视频涉台互联网网站怎么做1cpu0.5g服务器用来做网站
  • 营销型网站设计官网怎么做网站优化 sit
  • 怎样获得做网站的客户免费企业网站程序上传
  • 新闻排版设计用什么软件网站seo诊断分析
  • 手机网站端域名怎样做解析一诺摄影设计
  • 网站开发行业竞争大吗郑州百度推广代运营公司
  • mvc4做网站五设计一个公司网站多少钱
  • 在什么网站可以做外贸出口劳保鞋北京 代理前置审批 网站备案
  • 邢台建设企业网站房地产宣传推广方案
  • 建设机械网站案例分析餐饮vi设计开题报告范文