标签:
Java 由 Sun 公司在 1995 首次发布,既是一门编程语言,也是一个计算平台。
当你下载 Java 完时候,你会得到一个 Java Runtime Time(JRE)。JRE 由三部分组成 : JVM,Java 平台的核心类,支持 Java 平台的库。这三部分是执行 Java 应用运行的基础。
Java 是一门面向对象的编程语言,包括以下特性:
平台独立 - Java 应用被编译成字节码存储在 .class 文件中,运行在 JVM 里面。由 Java 应用运作在 JVM 里面,所以可以跑在不同的机器、设备上面。
面向对象 - 略
自动垃圾回收 - Java 自动地分配、回收内存空间,应用程序不会被这个问题捆绑。
丰富的标准库 - 略
JDK 是一个工具集合,用于开发 Java 应用。利用 JDK,可以编译用 Java 语言编写的程序,并使其运行在 JVM 上。JDK 还提供了打包、分发 Java 应用的工具。
JDK 和 JRE 共享同一个 Java Application Programming Interfaces(Java API)。
Java API 是一个预打包好的库的集合,用于创建 Java 应用。Java API 通过提供许多通用的工具,使得开发变得更容易些。提供的工具可用于处理:字符串操作、时间日期处理、网络编程、数据结构的实现(例如, list, map, stack 和 queue)
Java Virtual Machine(JVM),是一个抽象的计算机器。JVM 是一个程序,但是对于运行在里面的程序来说,JVM 相似一个机器。Java 程序使用同一套接口和库,各个操作系统的 JVM 实现把 Java 语言指令翻译成当前操作系统的指令命令。这样,Java 程序编可以达到平台无关的目的。
JVM 完全不知道 Java 编程语言,只知道一个特殊的库格式,.class 文件格式。一个 .class 文件包含 JVM 指令或者字节码,一张符号表,以及其他的辅助信息。
Java 商标归 Oracle 所有,Oracle 在发布的 JRE 包含一个Oracle 的 JVM,名为 HotSpot。下面介绍的是 HotSpot 的架构。
HotSpot 的关键组件
上图中高亮出来三个部分的是 JVM 性能相关的三个关键组件。在进行性能优化时,关注点也在这三个组件上面。
Heap,堆,用于存储对象的数据。
Garbage Collector, 垃圾回收器,用于管理 Heap 区域的内存。JVM 在启动时选择哪一个垃圾回收器。大多数的优化选项,和 Heap 的大小、垃圾回收器的选择有关。
JIT Compiler, 即时编译器,和性能有很大的关系,不过对于新版本的 JVM 很少需要调优。
通常,对一个 Java 应用进行性能调优时,主要关注两个关键目标中的一个:响应速度或者吞吐量。
响应速度(Responsiveness)
响应速度,是指一个应用或者系统响应一个请求,并提供被请求的数据,需要多久。
例如:
一个桌面程序的 UI 响应一个事件需要多久
一个网站返回一个页面需要多久
返回一个数据库查询需要多久
对于一个关注响应速度的应用来说,长时间的暂停是不可以接受的。这里的焦点在于响应时间应当很短暂。
吞吐量(Throughput)
吞吐量,关注的是在指定一段时间内,让一个应用处理任务的的量尽可能地多。
例如:
在给定时间内,可以完成的交易次数
在一个小时内,可以完成的批处理程序有多少
在一个小时内,可以完成的数据库查询次数有多少。
关注吞吐量的应用,一般可以接受长时间的暂停。由于高吞吐量的应用更关注长时间内的性能变化,所以响应速度不是重点。
参考资料
Java Technology and the JVM, Java Garbage Collection Basics, Oracle
标签:
原文地址:http://www.cnblogs.com/TonyYPZhang/p/5609144.html