使用实时 Java 进行开发,第 2 部分: 改善服务质量
2009-11-02 00:00:00 来源:WEB开发网核心提示:Java 应用程序中的易变性(通常是由暂停或延迟导致的,其发生时间无法预测)可能在整个软件栈中发生,使用实时 Java 进行开发,第 2 部分: 改善服务质量,延迟可由以下因素引起:硬件(缓存期间)固件(处理 CPU 温度数据等系统管理中断的过程中)操作系统(响应一个中断或执行定期调度的后台活动)在相同系统上运行的其他
Java 应用程序中的易变性(通常是由暂停或延迟导致的,其发生时间无法预测)可能在整个软件栈中发生。延迟可由以下因素引起:
硬件(缓存期间)
固件(处理 CPU 温度数据等系统管理中断的过程中)
操作系统(响应一个中断或执行定期调度的后台活动)
在相同系统上运行的其他程序
JVM(垃圾收集、即时编译和类加载)
Java 应用程序本身
很难在较高级别上补偿较低级别上的延迟,所以,如果您试图仅在应用程序级别解决易变性,您可能只是转移了 JVM 或 OS 延迟,并没有解决实际问题。幸运的是,较低级别的延迟可能比较高级别上的延迟相对短一些,所以只有在降低易变性的需求非常强烈时,才需要深入到比 JVM 或 OS 更低的级别上。如果需求不是那么强烈,您可以将精力集中在 JVM 级别上或应用程序中。
实时 Java 提供了必要的工具来堵截 JVM 和应用程序中的易变性源头,交付用户要求的服务质量。本文详细介绍 JVM 和应用程序级别上的易变性源头,介绍可用于减轻其影响的工具和技术。然后介绍一个简单的 Java 服务器应用程序来演示其中一些概念。
解决易变性源头
JVM 中的易变性主要源自于 Java 语言的动态特性:
内存绝不会被应用程序显式释放,而是被垃圾收集器定期回收。
类在被应用程序首次使用时才进行解析。
本机代码在应用程序运行时由即时(JIT)编译器编译(而且可以重新编译),基于经常调用的类和方法。
在 Java 应用程序级别上,线程管理是与易变性相关的关键区域。
垃圾收集暂停
赞助商链接