横跨数据中心的JVM和Twitter的JDK

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

在2016旧金山QConf大会的解决方案进展情况报告会上,Twitter为我们呈现了一些演讲。昨天,Twitter的JVM团队对外公布他们正在开发、发布和维护一个JDK分支版本。这个JDK是OpenJDK的分支,在Twitter内部发行,目前可以支持OSX和Linux,每个月发布一次,如果有紧急版本会缩短发布时间。来自Twitter的John Coomes告诉我们,在如何对OpenJDK的特性进行趋异演化方面,Twitter所做的跟Oracle-JDK有些类似。当被问及Twitter是如何决定对上游OpenJDK的变更进行合并时,Coomes回答说,这个取决于要发布的特性,况且他们并不打算维护一个跟OpenJDK主干分支紧密耦合的版本。

Twitter-JDK带来一些新的特性,比如经过扩展的堆内存分析、异步垃圾回收日志、二进制日志框架Contrail、中间代G1、更丰富的API和命令行参数、性能改进以及缺陷修复。Twitter-JDK的一些改进特性也会被上游的OpenJDK所采用。

Coomes提到了在OpenJDK的JVM里存在的一些问题,特别是GC的长时间停顿问题。一种改进的措施是把I/O密集和对延迟敏感的任务分开执行。不过Twitter有成千上万个运行在JVM上的服务,对它们进行分离是个很枯燥的工作。我们可以在达到安全点时关闭JVM的I/O,不过这样会降低对JVM的监控能力。随着基于Python的服务逐渐向基于JVM的服务迁移,Twitter的JVM服务数量只增不减。Twitter正在通过实现异步GC日志和jvmstat来解决这些挑战所带来的问题。这样,GC停顿就不会再阻塞I/O。Coomes说之后将会发布Contrail,Contrail包含了一个JIT编译器和运行时,支持堆栈跟踪,可以作为实现异步GC日志的支持框架。Twitter-JDK实现了贝叶斯优化算法,这个技术借鉴自机器学习,让JVM可以持续高效地学习模糊成本函数,可以更快地找到更优的处理路径。

被问及Twitter-JDK的VM调优参数时,Coomes说大概有30个参数可以用来对VM进行调优。用来衡量VM性能的成本函数就是指在GC期间每秒可以处理的请求数。Twitter在测试环境使用这30个参数对新VM进行了70轮GC测试,结果在性能上有182%的提升。未来的工作将包括对VM进行压力测试或极限测试、更长的试验期、基于Mesos的并发试验以及及早探测并结束无效试验的能力。

查看英文原文:JVMs Across the Data Center and Twitter's JDK

本文转自d1net(转载)

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
1月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
147 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
存储 算法 Java
JvM JDK JRE 三者区别与联系详解
本文深入解析了Java编程中的三个核心概念:JVM(Java虚拟机)、JDK(Java开发工具包)和JRE(Java运行环境)。JVM是执行Java字节码的虚拟计算机,实现“一次编译,到处运行”;JDK包含JRE及开发工具,用于编写和调试Java程序;JRE负责运行已编译的Java程序。文章详细阐述了它们的功能、组成及应用场景,并通过实例说明其在实际开发中的作用,帮助开发者理解三者联系与区别,提升开发效率与问题解决能力。适合Java初学者及进阶开发者学习参考。
441 3
|
3月前
|
监控 Oracle Java
JVM JDK JRE 使用指南及组件封装方法详解
本指南全面介绍了JVM、JDK、JRE的使用方法与Java组件封装技巧。内容涵盖JDK安装配置、JRE使用、JVM参数调优(如堆内存设置和垃圾回收器选择),以及类、包的封装实践。通过示例展示工具类与数据访问组件的封装方法,并讲解JAR包创建与发布流程。此外,还提供了常见问题解决方案,如内存溢出处理和依赖冲突管理。帮助开发者掌握高效、规范的Java开发技能,提升代码复用性和可维护性。附带面试资料供进一步学习。
148 0
|
12月前
|
存储 算法 Java
jvm性能优化(一)-基于JDK1.8
jvm性能优化(一)-基于JDK1.8
|
10月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
360 1
|
10月前
|
Java 编译器 API
深入解析:JDK与JVM的区别及联系
在Java开发和运行环境中,JDK(Java Development Kit)和JVM(Java Virtual Machine)是两个核心概念,它们在Java程序的开发、编译和运行过程中扮演着不同的角色。本文将深入解析JDK与JVM的区别及其内在联系,为Java开发者提供清晰的技术干货。
182 1
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
Java 编译器 程序员
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
|
Java 编译器 测试技术
Java零基础教学(03):如何正确区别JDK、JRE和JVM??
【8月更文挑战第3天】Java零基础教学篇,手把手实践教学!
164 2
|
人工智能 Java 编译器
Java零基础(3) - 区别JDK、JRE和JVM
【8月更文挑战第3天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
146 1