智能 JVM 和 JIT 微优化

2024-01-23

随着时间的推移,Sun 的 JVM 和 JIT 已经变得相当智能。过去作为必要的微优化而成为常识的事情不再需要,因为它会为您处理好。

例如,过去的情况是,您应该将所有可能的类标记为 Final,以便 JVM 内联尽可能多的代码。然而现在,JIT 根据运行时加载的类来知道您的类是否是最终的,如果您加载一个类以使原始类成为非最终类,它会取消内联方法并将其标记为最终的。

JVM 或 JIT 还可以为您执行哪些其他智能微优化?

EDIT:我将其设为社区维基;我想随着时间的推移收集这些。


这令人印象深刻。所有这些都是你的事情can't在 C++ 中可以做到(当然与 Java 的程度相同)。请记住,Java 的早期版本因为没有这些东西而开始了“缓慢”的声誉,我们不断改进显著地随着时间的推移。这仍然是一个很大的研究领域。

  • 高效的接口调度。 http://www.springerlink.com/content/9lvkunnh80fapue7/
  • 虚拟方法调用的内联和直接调度。 https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.3108
  • 非常快速的对象分配凹凸指针 https://www.oracle.com/java/technologies/javase/javase-core-technologies-apis.html(幻灯片 19 左右)和逃逸分析 https://web.archive.org/web/20150527090724/http://java.dzone.com/articles/escape-analysis-java-6-update.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能 JVM 和 JIT 微优化 的相关文章

随机推荐

  • F# 中最优雅的冒泡排序方式是什么?

    F 中最优雅的冒泡排序方式是什么 UPDATE 正如其中一个答案所指出的 冒泡排序在函数式语言中一开始就效率不高 一位幽默愤世嫉俗的评论者还指出 冒泡排序仅适用于列表很小且无论如何都已排序的情况 不过 我很好奇如何在 F 中编写巧妙的冒泡排
  • React Native 中最新的 doctor 命令的目的是什么

    我正在查看最新的 React Native 博客 其中他们介绍了 React Native 的 doctor 命令 从那里我唯一能理解的是为你做一些环境方面的事情 但我不明白目的 确切的目的是什么doctor反应本机命令 The docto
  • 使用 ColdFusion 加密 SagePay 表单

    我正在尝试使用 ColdFusion 10 遵循 SagePay 3 00 中加密字段的规范 要求是使用提供的密码作为密钥和初始化向量 在 CBC 模式下使用 PKCS 5 填充将字符串加密为 AES 块大小 128 位 并将结果编码为十六
  • ObjectARX、RealDWG 还是 Teigha? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我计划开发一款读取和操作 dwg 文件中的数据的软件 我决定使用 RealDWG 或 Teigha 而不是编写自己的库来处理数据文件的 读取 但
  • Admob 发送成人内容,如何禁用此功能?

    我刚刚完成了我的第一个应用程序 我正在使用 Admob 来发布广告 但在我上传到谷歌游戏商店之前 我已经在我的设备上进行了测试 一切都很顺利 直到今晚晚些时候 Admob 开始为成人内容做广告 有什么方法可以禁用此功能 如果有人下载我的应用
  • 以 JSON 形式返回实体框架对象

    我尝试在控制器中使用以下方法将实体框架对象作为 Json 返回 public JsonResult EventList var results from s in db Events select new OrderID s EventID
  • Hibernate/Spring 4 升级后,ClassCastException Proxy36 无法转换为 SessionImplementor

    编辑 我不是在问whatClassCastException 是 我想知道在 Spring 4 Hibernate 4 的这个特定配置下 在 DetachedCriteria 中是什么导致了它 我正在尝试将一些遗留代码升级到 Spring
  • “当站点管理员使用继承的配置文件中的 锁定对此部分的访问时。”

    因此 我在发布 ASP NET MVC 应用程序时收到此错误 它在本地运行良好 当站点管理员锁定对此的访问时 就会发生这种情况 部分使用
  • 将自定义字体添加到 cordova 项目

    我有一个自定义字体 我想在我的应用程序中使用 字体名称是 myfont 扩展名的文件是 myfont eot myfont svg myfont ttf myfont woff myfont woff2 当我进行 cordova 构建时 它
  • 在链表中使用C++模板,列表中出现多种不同类型

    首先 作为免责声明 这与作业有关 我不是要求任何人为我做作业 只是为了尝试帮助我理解如何正确实现模板 我当前的设置是 我有 A 类 这是一个基类 B C D班都是A班的孩子 我正在尝试创建一个链接列表 在单个列表中可以指向 B C 或 D
  • 仅 CSS 砌体布局

    我需要实现砖石布局 但是 出于多种原因 我不想使用 JavaScript 来完成此操作 参数 所有元素都具有相同的宽度 元素的高度无法在服务器端计算 图像加上各种数量的文本 如果必须的话 我可以接受固定数量的列 有一个简单的解决方案可以在现
  • 表单未保存到数据库

    我为 5K 跑步制作了一个表格 用户输入有关他 她的基本信息 名字 姓氏 电子邮件 组织 是否参加活动 并在查看豁免表格后选中复选框 我在最后放置了一个提交按钮 我在将表单连接到数据库时遇到问题 我已经尝试连接并在 mySql 中制作了一个
  • 随机地形生成

    如何制作一个地形生成器来制作更真实的地形 我当前的生成器可以生成这种类型的地形 我怎样才能让它制作出更真实的地形 比如湖泊和河流 基本上 您在生成的地形上定义并应用一组过滤器 我无法详细说明 但我会提供一些提示供您谷歌 沃罗努图 侵蚀过滤器
  • 如何一次一行读取 csv 文件并随时替换/编辑某些行?

    我有一个 60GB 的 csv 文件 需要对其进行一些修改 客户想要对文件数据进行一些更改 但我不想重新生成该文件中的数据 因为这花了 4 天的时间 如何逐行读取文件 不是将其全部加载到内存中 并随时编辑这些行 替换某些值等 这个过程大概是
  • JQuery Ajax Post 导致 500 内部服务器错误

    我正在尝试执行此 AJAX 帖子 但由于某种原因我收到服务器 500 错误 我可以看到它在控制器中遇到了断点 所以问题似乎出在回调上 任何人 ajax type POST url InlineNotes Note ashx id notei
  • 在 Angular 中使用 bigint 文字时模块解析失败

    我正在开展一个个人项目来尝试学习 Angular 框架 我目前是它的新手 但我已经设法 我认为 包含javascriptbigint在打字稿中正确输入数字 通过在 tsconfig json 文件中定位 esnext 版本 因为这工作正常
  • Bootstrap 轮播上的动画高度变化 (v2.3.2)

    我正在尝试使用 Bootstrap 的轮播来处理高度不同的内容 高度会根据浏览器宽度而有所不同 并且轮播下方有内容 我想使用 CSS 来动画幻灯片之间的高度变化 在朋友的帮助下 我几乎可以在 FireFox 中实现此功能 第一张幻灯片跳转
  • 从 Cognito 触发器发送消息

    我想限制用户从 Cognito 托管的 UI 登录 我可以看到有触发器可以附加 lambda 但是每当我更改 lambda 内部的事件对象时 而不是获取自定义消息User exceeded limits I get unrecognizab
  • 如何像屏保一样改变CAGradientLayer的颜色?

    我被创造了UIView与申请CAGradientLayer颜色效果如我所附图片所示 现在 我想像屏幕保护程序一样平滑地改变它的渐变颜色从上到下的变化 我已经尝试过使用NStimer有点完成了 但它的颜色在改变CAGradientLayer看
  • 智能 JVM 和 JIT 微优化

    随着时间的推移 Sun 的 JVM 和 JIT 已经变得相当智能 过去作为必要的微优化而成为常识的事情不再需要 因为它会为您处理好 例如 过去的情况是 您应该将所有可能的类标记为 Final 以便 JVM 内联尽可能多的代码 然而现在 JI