Java 技术基于 Java 虚拟机(Java virtual machine,JVM)的概念 —— 这是语言与底层软件和硬件之间的一种转换器。Java 语言的所有实现都必须实现 JVM,从而使 Java 程序可以在有 JVM 的任何系统上运行。

JVM 技术

Jikes 研究虚拟机(RVM) Jikes 研究虚拟机(Jikes Research VirtualMachine,RVM)是为执行这样一种 Java 程序而设计的,这种 Java 程序典型地用于研究基本的虚拟机(virtualmachine,VM)设计问题。它为科研院所提供一个灵活的测试平台(testbed),可以在这个测试平台上建立新的虚拟机技术的原型和试验各种各样的设计方案。

Java 共享类 如今 Java 应用程序面临一个问题:它们惟一可用的容器是 Java 虚拟机(JVM)进程自身。需要多个 JVM 来彼此隔离 Java 应用程序,这会带来两个主要的负面影响。第一个是每次 JVM 调用所花费的启动时间,第二个是每个 JVM 所需的内存占用。考虑到这些开销以及不能在一个 JVM 中隔离应用程序,很显然需要进行一些基础性工作才能解决这些问题。答案就是共享类。本文讨论了 JVM 中共享类背后的概念、它们的工作原理以及用户如何利用这种技术。

驯服 Tiger: 虚拟机更新 本文介绍了 Java 5(Tiger)虚拟机如何改善了启动时间、降低内存需求、提高性能。Tiger 提供了共享的数据档案文件、新的线程调度算法以及致命错误处理器(用来处理故障)。

Java 理论与实践: 再谈 Urban 性能传言 Java 语言遭到许多性能方面的攻击。虽然有些攻击可能是名符其实的,但是看看公告板和新闻组上关于这一主题的贴子,可以发现,对于 Java 虚拟机(JVM)实际的工作方式存在许多误解。本文驳斥了反复重复出现的有关 JVM 分配慢的传言。

Java 理论与实践: Mustang 中的同步优化 在文研究了 Escape 分析,这是许多 JVM 在相当一段时间内已经放入日程表的一项优化,也是预计会在 Mustang (Java SE 6)发行版的 HotSpot 中出现的优化。本文将介绍一些为 Mustang 安排的同步优化。

通过 JVM 查看关于 Apache Geronimo 的统计信息 有时候,可能需要分析和优化应用程序的效率。有许多工具可用于该任务,但您可以通过分析 Java 虚拟机 (JVM) 统计信息基本完成该任务。本文将帮您体验如何从 JVM 获得统计信息,从而对应用程序进行概要分析和优化,以满足性能需要。

垃圾收集(Garbage Collector,GC)

Java 的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。

关于垃圾收集

垃圾收集简史 Java 语言可能是使用最广泛的依赖于垃圾收集的编程语言,但是它并不是第一个。垃圾收集已经成为了包括 Lisp、Smalltalk、Eiffel、Haskell、ML、Scheme和 Modula-3 在内的许多编程语言的一个集成部分,并且从 20 世纪 60 年代早期就开始使用了。本文描述了垃圾收集最常用的技术。

JVM 1.4.1 中的垃圾收集 本文将进一步探讨 JVM 1.4.1 是如何实际处理垃圾收集的,包括一些针对多处理器系统的新垃圾收集选项。

垃圾收集器与 Java 编程 本文首先介绍 GC 的工作原理,然后对 GC 的几个关键问题进行深入探讨,最后提出一些 Java 程序设计建议,从 GC 角度提高 Java 程序的性能。

垃圾收集与内存泄漏

Java 的内存泄漏 很多程序员认为 Java 不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是 GC 或 JVM 的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与 C++ 不同。

它是谁的对象? 尽管垃圾收集意味着 Java 开发者不必太多地担心内存 泄漏,有时我们仍然需要担心对象所有权,以防止数据争用(data races)和不必要的副作用。本文指出了一些这样的情况,即 Java 开发者必须注意对象所有权。

用弱引用堵住内存泄漏 虽然用 Java 语言编写的程序在理论上是不会出现“内存泄漏”的,但是有时对象在不再作为程序的逻辑状态的一部分之后仍然不被垃圾收集。本文探讨了无意识的对象保留的常见原因,并展示了如何用弱引用堵住泄漏。

良好的内务处理实践 垃圾收集几乎是每位 Java 平台开发人员都喜爱的一个特性,它简化了开发,消除了潜在的代码错误。可是尽管垃圾收集通常可以让您无需进行资源管理,但有时候您还是必须自己进行一些内务处理。本文讨论了垃圾收集的局限性,并介绍了您必须自己做内务处理的场景。

垃圾收集与性能

关注性能: 引用对象 本文目光投向 Java 游戏 Web 站点,去看看游戏开发者是怎样发现和解决垃圾收集过程中应用程序不能释放对象时出现的问题。

关注性能: 谈论垃圾 本文解释如何识别垃圾收集问题,并由此帮助您回答这个问题:您知道垃圾收集器在干什么吗?

关注性能: 调优垃圾收集 当一些意料之外的性能问题突然出现时,本文作者被邀请帮助进行技术调整。他们的检测工作因为受硬件约束和整个项目所使用的通信通道(IRC、ftp 和 偶尔的电子邮件)的限制而变得复杂。

关注性能: 调优垃圾收集 当一些意料之外的性能问题突然出现时,本文作者被邀请帮助进行技术调整。他们的检测工作因为受硬件约束和整个项目所使用的通信通道(IRC、ftp 和 偶尔的电子邮件)的限制而变得复杂。

优化 Java 垃圾收集器改进系统性能 本文介绍了如何分析系统的处理能力和 GC 之间的关系,以及如何通过改进 JVM 的配置来优化 GC,以提高系统的性能。

类路径

管理 Java 类路径 (Windows) 类路径是 Java 平台中最复杂也最令人头痛的部分之一,但熟练掌握类路径对成为一名专业 Java 程序员来说却又十分关键。本文为您阐述了类路径和源路径的复杂性,并向您展示了如何在 Windows 中熟练掌握它们。

管理 Java 类路径(UNIX 和 Mac OS X) 本文是上一篇的姐妹篇。

类路径冲突的鉴别 类路径冲突在处理开放源代码 Java 软件时比较常见。本文将介绍出现类路径问题时鉴别类路径冲突的简易方法。

Windows 平台上长路径名文件的解决方法 使用本文的方法,可以解决在 Windows 平台上标准 API 函数对长路径名文件支持的局限性问题,给开发测试工作带来方便。

类装入器(ClassLoader)

类装入组件是 Java 虚拟机的基础。虽然开发人员一般对类装入的基础有良好的掌握,但是当问题发生时,在诊断问题和确定解决方案方面可能还要有一定的困难。

了解 Java ClassLoader Java ClassLoader 是一个重要的、但又常常被人忽略的 Java 运行时系统组件。它是负责在运行时查找和装入类文件的类。创建自己的 ClassLoader 可以以实用且有趣的方式定制 JVM,这样可以让您彻底重新定义如何将类文件引入系统。

类和类装入 本文提供了 Java 二进制类格式以及在 JVM 内部类所发生的情况的内幕,还讨论了类装入问题,其范围涉及从运行简单的 Java 应用程序所需的类的数量到可能造成 J2EE 及类似的复杂体系结构出现问题的类装入器冲突。

类装入问题解密系列(共四部分) 这份由四部分组成的系列中,讨论了在 Java 开发中可能遇到的各种类装入问题,解释了它们为什么会发生和如何解决它们。

深入剖析 Eclipse 类装入器 本文深入剖析了 Java 的类装入器机制以及 Eclipse 的类装入器的原理与模型,并总结了 Eclipse 插件应用开发常见的与类装载器相关的问题,同时给出了相应的解决方法。