WEB开发网
开发学院软件开发Java 使用实时 Java 进行开发,第 2 部分: 改善服务质量... 阅读

使用实时 Java 进行开发,第 2 部分: 改善服务质量

 2009-11-02 00:00:00 来源:WEB开发网   
核心提示: 在实时垃圾收集器上运行应用程序时,堆大小和应用程序利用率是要考虑的重要调优选项,使用实时 Java 进行开发,第 2 部分: 改善服务质量(3),随着应用程序利用率的增加,垃圾收集器完成其工作的时间会更短,清单 1 中的代码包含一个可能很少发生的 if 条件,(为了简单起见,因此需要更大的堆来确

在实时垃圾收集器上运行应用程序时,堆大小和应用程序利用率是要考虑的重要调优选项。随着应用程序利用率的增加,垃圾收集器完成其工作的时间会更短,因此需要更大的堆来确保 GC 周期可以增量式地完成。如果垃圾收集器无法跟上分配速度,GC 将采用同步收集。

例如,与在使用分代垃圾收集器的 JVM 上(未提供利用契约)运行时相比,在 IBM WebSphere Real-Time JVM 上运行的应用程序(具有 70% 的默认应用程序利用契约)默认需要更大的堆。由于实时垃圾收集器控制着 GC 暂停时间的长度,所以增加堆大小会降低 GC 频率,不会延长各次暂停时间。另一方面,在非实时垃圾收集器中,增加堆大小通常会降低 GC 周期的频率,这会降低垃圾收集器的总体影响。当发生垃圾收集时,暂停时间通常会更长(因为需要检查更大的堆)。

在 IBM WebSphere Real Time JVM 中,可以使用 -Xmx<size> 选项调整堆大小。例如,-Xmx512m 指定堆大小为 512MB。还可以调整应用程序利用率。例如,-Xgc:targetUtilization=80 将利用率设置为 80%。

Java 类加载暂停

Java 语言规范要求在应用程序首次引用类时对类进行解析、加载、验证和初始化。如果对一个类 C 的首次引用发生在时间关键型操作期间,那么解析、验证、加载和初始化 C 的时间可能导致执行操作的时间比预期更长。由于加载 C 涉及到验证该类(这可能需要加载其他类),所以 Java 应用程序为了能够首次使用特定类而发生的总延迟可能比预期长很多。

为什么类只能在应用程序执行期间首次被引用?很少执行的路径是加载新类的一个常见原因。例如,清单 1 中的代码包含一个可能很少发生的 if 条件。(为了简单起见,我们尽可能省略了本文中所有清单中的异常和错误处理)。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 实时 Java

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接