几个月前,我正在阅读Java中的复杂事件处理以及实现低延迟的方法。 在我长达一个小时的研究结束时,我发现即使您的应用程序编写正确并且您的方法主要在0(log n)的时间内运行,并且您正在使用某些前沿的硬件解决方案,但仍会花费一些时间。 VM在解释字节码期间。

从好的方面来说,Java被解释了,它的字节码是跨JVM兼容的,但是我们也知道,因此,我们注定会在某些地方丢失某些东西。 我们的JVM读取解释的字节码并每次运行。 显然,这需要时间。

但是考虑到我们友好的邻居JIT编译器(服务器或客户端)会注意常用的方法,并且发现方法被调用了太多次时 ,它会将其编译为本机代码,而不是依赖JVM,因此它的性能还不错。一直在字节码上。

使用vm参数配置“太多次”的数字

<-XX:CompileThreshold

默认值为1500 。 一个自然的猜测是减少数量将意味着更多的方法更快地转换为本地代码,这意味着更快的应用程序,但事实并非如此。 相当低的数字将意味着服务器由于JIT编译太多方法(毕竟可能很少经常使用)而花费的时间非常慢,并且由于本机代码驻留在内存中,因此您的应用程序将荣获“记忆杀手”奖,并以缓慢的痛苦死亡。 稍作谷歌搜索就可以发现100左右的数字还不错。 同样,这取决于您的应用程序以及使用模式和流量。

忘了提及,成为JIT本机编译候选对象的最小编译单元是一种方法。 不是一个障碍。 因此,长期使用脂肪的方法–祝您好运!

实际上,这种JIT编译并非一go而就。 它有两个整洁的阶段:

1)每次调用方法时,其计数器都会增加1,并在达到阈值后不久,JIT会进行第一次编译

2)第一次编译后,计数器将重置为0,然后再次递增。 在第二个周期中,当JIT达到阈值时,它将进行第二轮编译 –这次具有更激进和令人敬畏的优化(对不起–无法在此处提供很多详细信息)

如果您使用的是JDK 7,并且您的计算机在多核上运行(我不知道为什么不这样做),则可以使用以下标志来加快本机编译过程

-server -XX:+TieredCompilation

考虑到可用选项的数量,我不能声称自己是JVM调优的专家。 因此,如果您觉得有用或不正确,请留下您的评论。

别忘了分享!

参考:通过我们的JCG合作伙伴 Arun Manivannan的Rerun.me博客为您的JVM热身-超快速生产服务器和IDE 。

翻译自: https://www.javacodegeeks.com/2012/10/warming-up-your-jvm-superfast.html

预热您的JVM –超快速生产服务器和IDE相关推荐

  1. jvm ide_预热JVM –超快速生产服务器和IDE

    jvm ide 几个月前,我正在阅读Java中的复杂事件处理以及实现低延迟的方法. 在我长达一个小时的研究结束时,我发现即使您的应用程序编写正确并且您的方法主要在0(log n)的时间内运行,并且您使 ...

  2. 在短短几分钟内用冰柱构建超快速PHP服务器

    Event-based programming is a strange topic for PHP developers. In a language as procedural; events a ...

  3. 京东必考JVM 问题诊断快速入门

    JVM 问题诊断快速入门 JVM 全称为 Java Virtual Machine,翻译为中文 "Java 虚拟机".本文中的JVM主要指 Oracle 公司的 HotSpot V ...

  4. 什么是Vite:现代和超快速项目工具指南---下一代前端工具

    Vite 是一款用于脚手架和捆绑项目的现代.超快速工具,由于近乎即时的代码编译和快速的热模块更换,它迅速变得流行起来.在本文中,您将了解Vite是什么以及如何使用它来构建新项目,等等. 今天创建新项目 ...

  5. AServer - 基于Asp.net core Kestrel的超迷你http服务器

    AServer是基于ASP.NET Core Kestrel封装的一个超迷你http服务器.它可以集成进你的Core程序里,用来快速的响应Http请求,而不需要集成整个ASP.NET Core MVC ...

  6. jboss eclipse_调试生产服务器– Eclipse和JBoss展示

    jboss eclipse 您是否编写有错误的代码? 不,当然不是. 对于我们其余的人,他们确实会编写带有bug的代码,我想解决一个非常敏感的问题:调试在生产服务器上运行的应用程序. 因此,您的应用程 ...

  7. 调试生产服务器– Eclipse和JBoss展示

    您是否编写有错误的代码? 不,当然不. 对于我们其余的确实会编写带有错误的代码的凡人,我想解决一个非常敏感的问题:调试在生产服务器上运行的应用程序. 因此,您的应用程序已准备好进行部署. 单元测试全部 ...

  8. mvp内粗泄露问题_如何在一天内从MVP转到生产服务器

    mvp内粗泄露问题 by Yisroel Yakovson 通过伊斯洛尔·雅科夫森 如何在一天内从MVP转到生产服务器 (How to go from MVP to Production Server ...

  9. 服务器内存超频性能,服务器内存可以超频么

    服务器内存可以超频么 内容精选 换一换 在昆仑服务器高可用的场景下可以采用ISCSI盘用作SBD卷作为存储方案,若采用此方案则可以跳过DESS相关步骤.用户也可选择DESS作为存储方案,详细方案请参考 ...

最新文章

  1. php中ini set,php ini_set更改php.ini配置功能
  2. C语言经典例30-判断回文数
  3. 快速排序之Java实现
  4. Eclipse设置条件断点
  5. Bzoj 3680 吊打xxx【[模拟退火】
  6. (纯干货)万字长文,数据分析利器 pandas 全教程
  7. left join 不重复_R语言ETL工程:连接(join)
  8. 集群环境下的Session共享
  9. Angular Component的加载触发时机
  10. html 横屏内容显示不全_“屏”什么喜欢你,车载显示器有哪些新玩法...
  11. 剑指offer(04)重建二叉树
  12. 虹软安卓人脸识别初学
  13. (1)webpack介绍
  14. 符号库匹配不对的原因_整理了几种离合器打滑的原因,再安装调试时可别弄错了...
  15. 移动端的推拉效果导航菜单-支持响应式及其多层菜单
  16. MySQL中各种日期格式转换
  17. docker技术之基本命令
  18. 【DP算法篇之初学】LIS\LCS\二维DP\带条件DP
  19. 一文读懂ssh,tomcat,LANP,LNMP,ftp,dns等常见的环境配置(运维工程师必看)
  20. 多任务深度强化学习入门

热门文章

  1. es7 bulk api 批量插入es
  2. java timer开销_减少Java垃圾收集开销的5条提示
  3. 易流即时配送_即时大数据流处理=即时风暴
  4. Vaadin 10+作为CUBA UI的未来
  5. how2java_HOW TO:构造Java类的原型
  6. JDK Bug系统浪费时间
  7. openjdk 使用_如何在OpenJDK中使用ECC
  8. JSON合并补丁:JSON-P 1.1概述系列
  9. 使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行
  10. java泛型面试_Java泛型面试问题