大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

Java 7 Update 1 的性能和稳定性

  • 2011-12-15
  • 本文字数:1106 字

    阅读完需:约 4 分钟

Oracle 于 10 月 18 日发布了 Java 7 Update 1 ,给 Java 7 带来了迫切需要增强的稳定性,并且修复了我们以前报道过的HotSpot 编译器的性能优化问题,这个问题偶尔会导致错误结果甚至导致 SIGSEV 崩溃。JDK 6 Update 29 在使用不推荐用于生产服务器的参数 XX:+AggressiveOpts 或者 -XX:+OptimizeStringConcat 时,也存在相同的问题,这在此次更新中也得到了修复。

Java HotSpot 虚拟机性能增强文档中,Oracle 描述了其他一些与性能相关的特性。这份简短的文档只包含一项改进:-XX:+TieredCompilation。

分层编译在早先编译器的混合模式行为上增加了额外的一步。服务器会先对 JVM 分级,然后 Java 7 才会在解释模式下运行代码。然后代码只会在“热”的时候才被编译和优化,并被 HotSpot VM 标记,比如说有较高的执行次数。解释模式无论如何都比运行编译后的代码慢很多。-XX:+TieredCompilation 让虚拟机可以在已经运行编译后代码的同时,收集用于优化的统计信息。

尽管这项改变可能会减少高动态性系统的预热时间,其中节点会不断地与服务器连接,但是它带来的改进并不十分明显,就像桌面或者 applet 程序的启动没那么重要一样。

以下列出的针对 JVM 7 的改进对于 Java 6 都已经生效:

  • _Compressed Oops_ 自 Java 6 Update 14 有效,自 Update 23 成为默认设置(仅 64 位)
  • _Escape Analysis_ 自 Java 6 Update 14 有效,自 Update 23 成为默认设置
  • _ 非统一内存访问垃圾回收(Non Uniform Memory Access Garbage Collection)_ 自 Java 6 Update 2 有效

Compressed Oops 会为 64 位地址的 JVM 节省内存。JVM 将使用更简短的地址来引用与堆起点相关的对象,而不是从操作系统获得 64 位内存地址。由于减少了对象引用的内存使用,大多数程序都会受益于这项特性。

Escape Analysis 会查明新分配内存的对象是否要“脱离”当前方法的作用域。如果不是那样,那么该对象就可能会被分配在方法栈上,甚至同步可能会被移除(锁省略)。Heinz Kabutz 就该项优化的效果有一篇全面的文章

非统一内存访问垃圾回收是一项很有意义的改进,其实已经存在很长一段时间了。在现代内存架构中,有一些内存区比别的内存区的读写操作快。特别是在多核系统中,有些内存是专为个体CPU 保留的。感兴趣的读者可以从 Ulrich Drepper 优秀的文章中更多地了解这些内存区。JVM 将尝试在执行分配内存线程的核所使用的内存中分配对象的内存。该性能改进要求很高(特别是在 Solaris 机器上),但是 -XX:+UseNUMA 选项从来都不是默认的。

随着大部分改进在 Java 6 Updates 上可用(乃至成为默认项),Java 7 由于性能方面的原因依然没有吸引我们升级的亮点。

查看英文原文: State of Performance and Stability in Java 7 Update 1

2011-12-15 01:254916

评论

发布
暂无评论
发现更多内容

2023京东全球科技探索者大会暨京东云峰会来了!

京东科技开发者

人工智能 AI 京东云 AIGC 企业号 6 月 PK 榜

上新!智能分析云助力【消费品行业】实现数智驱动

用友BIP

数据分析

接口测试|Fiddler界面工具栏介绍(一)

霍格沃兹测试开发学社

fiddler

ABAQUS 在按键手感分析中的应用

思茂信息

软件设计 abaqus abaqus软件 abaqus有限元仿真 有限元仿真技术

【有奖征文 】AI编程:华为云CodeArts Snap入门体验

人工智能 AI

接口测试|HttpRunner获取响应数据&extract提取值到变量

霍格沃兹测试开发学社

HttpRunner

单元测试|Unittest setup前置初始化和teardown后置操作

霍格沃兹测试开发学社

HttpRunner

接口测试|Fiddler介绍以及安装

霍格沃兹测试开发学社

fiddler

如何实时统计最近 15 秒的商品销售额|Flink-Learning 实战营

Apache Flink

大数据 flink 实时计算

供应链协同——企业全球供应链可持续发展的基础

用友BIP

全球化 中企出海

软件测试/测试开发丨学习笔记之Python运算符

测试人

Python 程序员 软件测试 运算符

SaaS产品如何用好大模型?腾讯云给出了一个参考答案

ToB行业头条

接口测试|HttpRunner接口关联与常用断言

霍格沃兹测试开发学社

HttpRunner

时序数据库 TDengine 与 OpenCloudOS8、TencentOS Server2&3 完成产品兼容性互认证明

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine taosdata

接口测试|Fiddler界面主菜单功能介绍(二)

霍格沃兹测试开发学社

fiddler

如何用好数智员工实现轻松采购?

用友BIP

数智底座 Pass平台 采购云

中原银行 OLAP 架构实时化演进

Apache Flink

大数据 flink 实时计算

Run in PaddleX 2.0,一站式搞定飞桨精选模型开发全流程!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

WorkPlus AI助理正式上线!为企业打造定制化的AI私有助理

BeeWorks

接口测试|HttpRunner环境变量与跨文件输出传递变量

霍格沃兹测试开发学社

HttpRunner

将 NGINX 部署为 API 网关,第 1 部分

NGINX开源社区

nginx 网关 NGINX Kubernetes Gateway

软件测试/测试开发丨学习笔记之Docker常用命令

测试人

Docker 程序员 容器 软件测试 测试开发

接口测试|Fiddler界面工具栏介绍(二)

霍格沃兹测试开发学社

fiddler

为何选择美国主机来托管你的网站?

一只扑棱蛾子

美国主机

这样的全面预算体系才能构建一流财务体系!

用友BIP

全面预算

谈谈数智人力建设过程中发现的问题及感悟

用友BIP

数智人力

接口测试|Fiddler界面主菜单功能介绍(一)

霍格沃兹测试开发学社

fiddler

LangChain Java-the Java implementation of LangChain

HamaWhite

openai LLM #LangChain langchain LLM模型

融云WICC2023:成为「卷王」的路上,如何更好借力 AIGC

融云 RongCloud

互联网 融云 泛娱乐 出海 通讯

接口测试|HttpRunner header处理以及发送post请求

霍格沃兹测试开发学社

HttpRunner

Java 7 Update 1的性能和稳定性_Java_Fabian Lange_InfoQ精选文章