写点什么

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:254485

评论

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

大数据开发应用场景解读

Jackchang234987

大数据 数据开发

工业4.0时代IIoT存储面临哪些挑战

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

Spring Security 在 Servlet 的作用区域

HoneyMoose

Python之简易计算器的制作

芯动大师

Python 9月月更 简易计算器

第1章:初识数据库与MySQL----数据库基本概念

乌龟哥哥

9月月更

第56届世乒赛团体赛开幕!三思近900㎡ LED显示点燃赛事激情

电子信息发烧客

Java中的悲观锁和乐观锁是什么意思?其分类依据是啥?

wljslmz

Java 乐观锁 悲观锁 9月月更

Python之鸡兔同笼

芯动大师

9月月更 Python语法 鸡兔同笼

部署华为云DWS过程

乌龟哥哥

9月月更

《MySQL入门很轻松》第4章:数据表中存放的数据类型

乌龟哥哥

9月月更

给你一本武林秘籍,和KeeWiDB一起登顶高性能

腾讯云数据库

redis 腾讯云 NoSQL 数据库 腾讯云数据库 KeeWiDB

新品速递|海泰边缘安全网关护航工控数据采集

电子信息发烧客

(WebFlux)004、WebFilter踩坑记录

编号94530

Spring Boot WebFlux Reactor3 WebFilter

14个你必须要知道的ubuntu快捷键

乌龟哥哥

9月月更

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

9月月更

面试官问我 JS 中 foreach 能不能跳出循环

茶无味的一天

JavaScript js foreach for

微信架构图

Johnny

#架构实战营

Python之斐波那契数列的实现

芯动大师

Python 9月月更 斐波那契数列

打破线上社交“不可能三角”,语音社交可以做到既要、又要、还要

擎声科技

音视频 sdk 语音社交 实时互动 擎声Qtt

Databricks Data Science&Engineering模块介绍

Jackchang234987

大数据 数据产品经理 数据产品 大数据开发 Databricks

无线网络安全技术中的王牌标准:WPA到底是个什么东东?解决了什么问题?

wljslmz

网络安全 无线技术 9月月更 WAP

数据价值平台化输出:数据服务平台

Taylor

数据中台 接口管理 API接口管理 数据服务 数据服务平台

「产品运营」研发效能之DevOps平台如何运营?

laofo

DevOps cicd 研发效能 持续交付 工程效率

开发者有话说|我想给你讲一个故事

石云升

个人成长 9月月更

极速体验SpringCloud Gateway

程序员欣宸

Java SpringCloud SpringCloud Gateway 9月月更

《MySQL入门很轻松》第5章:数据完整性及其分类

乌龟哥哥

9月月更

从单机百万tpmc到分布式千万tpmc,GaussDB性能提升的3个关键技术剖析

乌龟哥哥

9月月更

字符串哈希

留白的艺术

leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)

okokabcd

LeetCode 数据结构与算法

OptaPlanner场景和示例

积木思维

2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true

福大大架构师每日一题

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