[翻译]G1垃圾收集器(二) 之 java技术和JVM

java概述

java是一门编程语言和计算平台,第一个版本有Sun 微系统公司在1995年发布,它是支撑java程序,包括公用事业,游戏,和商业等应用的底层技术。java程序跑在全球超过850万的个人电脑,以及数十亿的设备中,包括移动电话和电视设备。java是有一些关键组建的集合,作为一个整体,构建了所谓的java平台

java运行时版本(JRE)

java是一门面向对象的编程语言,包括以下几方面特性:

  • 平台无关性,java应用程序,被编译成字节码,存储在类文件中,并在jvm中加载执行。既然java是运行在jvm中,那么它可以在任意不同的操作系统和设备中运行。
  • 面向对象,java作为一门面向对象的语言,获取了C/C++的一些语言特性,并加以改进。
  • 自动垃圾回收机制,Java自动分配和释放内存,所以程序不用承担这份任务。
  • 丰富的标准库,java预置了大量的对象,用于实现各种功能,包括关于输入/输出,网络,日期等方面的操作。

java开发工具包(JDK)

JDK是开发java程序的一些工具的集合。使用JDK,你可以编译你用java写的程序,并在JVM中运行它,此外JDK还提供打包、发布你的应用的工具。

JDK和JRE有一样的java应用程序接口(API),JAVA API是提供给开发者开发应用,预先打包的一些类库的集合,这些JAVA API让开发者在开发一些常用功能的时候变的很容易,包括字符串的操作,日期和时间的处理,网络相关。还实现了一些数据结构(例如:链表,map,栈,队列等)

java虚拟机(JVM)

java虚拟机是一个抽象的计算机,JVM是一个程序,就像一个虚拟的机器,可以让写的程序在上面执行,这样每一个java程序,都是面向同一份接口和类库。针对每一种操作系统,java虚拟机都可以把java程序翻译成操作系统对应的指令,所以java程序是不依赖平台的。

jvm的第一份原型是有sun公司开发的,在一个在手持设备上类似个人数字助理软件中,实现了jvm的指令集。目前oracle公司虽然在手机、桌面或者服务器设备上实现了jvm。但是jvm并不限定特殊的实现技术,主机硬件和主机操作系统。可能这个解释不是很确切,但是的确对于一个硅晶体管CPU,通过编译它的指令集来就可以实现(JVM),或者通过微码,甚至直接通过硅晶体管来实现,也不是不可能实现的。

jvm对于java语言写的程序是不认识的,它只认一种特殊的二进制格式-class文件。一个class文件包含jvm的指令集(或者说字节码)和一个符号表,以及一些其它辅助信息。

为了安全起见,jvm对class文件中的代码,有严格的语法和格式限制。然而任何编程语言,如果可以编译成class文件,都可以在jvm中运行。所以作为一个一般可用,与平台无关的平台,对于其它语言的实现,也可以把jvm作为他们的运行载体。

探索JVM结构体系

Hotspot体系

HotSpot JVM有一个支持强大特性和功能,可实现高性能和高扩展性的结构体系,例如HotSpot JVM的JIT编译器的动态优化功能。换句话说,它可以在java应用运行时做一些优化,让它生成对于底层系统体系更高效的本地机器指令。此外,通过对运行环境、多线程垃圾回收机制的不断成熟演进,HotSpot JVM甚至可以扩展到更多的计算机系统中。

JVM 的组成

JVM的主要组成部分,包括:类加载器,运行时数据区,和执行引擎。

关键 Hotspot组件

在JVM中,涉及到性能的关键部件如下图高亮显示。jvm中涉及到性能的部件

在性能调优方面主要聚焦三个组件:堆栈是用于存储对象数据的。这块区域在程序启动之后就有GC管理了,大多数调优选项是和调整堆栈大小以及选择合适的GC有关的。JIT编译器对性能也有影响,但是对于新版本的JVM很少需要你手动调优。

基本性能

通常情况下,调优一个Java应用程序时,重点是主要是两个目标中的一个:响应速度和吞吐量。我们会请参考这些概念的教程的进展。在教程讲解的过程中,我们会涉及到下面这样概念:

响应速度

响应速度是指在接收到请求数据之后,一个应用程序或者系统响应的有多快。例如包括:

  • 一个桌面UI对一个事件的响应有多快
  • 一个web站点多久返回一个页面
  • 一个数据库查询多长时间能返回

对于响应速度要求很高的应用程序,大的时间暂停是不被接受的,重点就是在短时间内响应。

吞吐量

吞吐量就是一个应用在一定的时间内做尽量多的事情,衡量吞吐量包括以下的例子:

  • 在给定时间内完成事物的多少
  • 一个批处理程序在1个小时内完成的任务数
  • 数据库在一个小时内可做的查询数

对大吞吐量要求高的程序,高暂停时间是可以接受的,由于大吞吐量的程序是更关注于在一定较长时间内,所以快速的响应时间不是它要考虑的。

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 *