,Java   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,Java
您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
“老虎”来了 J2SE1.5新功能一览
[文章信息]
作者:李娟编译
时间:2004-09-21
出处:天极网
责任编辑:方舟
[文章导读]
虽然Java版本从1.0发展到1.4.2,但Java语言本身一直没有什么大的变化,只是增加了少量关键字
advertisement
热点推荐
· 深入探讨SQL Server 2000对XML的支持
· Swing(空)
· 3DS Stodio Max 宝典
· 中小企业服务器配置方案--前 言
· 中小企业服务器配置方案--代理接入服务器(3)
[正文]

上一页  1 2 3 4 5  下一页

  可扩缩性和性能

  Sun承诺在1.5版中对可扩缩性和性能方面进行改善,新的重点在于启动时间和内存大小,使得高速部署应用程序变得更加容易。

  最显著的更新是引入了在HotSpot JVM中共享数据的类。这种技术不仅在多个运行的JVM之间共享只读数据,而且改善了启动速度,因为核心的JVM类是预包装的。

  性能人机工程学是J2SE 1.5的新特性。这意味着如果你在原先的版本中使用了特定的JVN运行期间选项,可能不必重新验证你的性能。

  监控和可管理性

  监控和可管理性是 Java 平台中的 RAS (Reliability, Availability, Serviceability,即可靠性、可用性、可服务性) 的一个关键组件。

  JVM监控和管理API指定了一套广泛的JVM内部实现方法,允许监视一个运行中的JVM。信息可以通过JMX ( JSR - 003) MBeans访问,并且可以在Java地址空间内本地访问或者使用JMX远程接口(JSR -160)和行业标准的SNMP协议工具来访问。

  最有用的一个特性就是低内存探测器。但超过阀值时,JMX MBeans可以通知注册的监听器什么时候达到临界值。

  J2SE 1.5提供了一个简单的方法,可以启动JVM和应用程序的out - of - the - box远程管理。例如,为了启动一个可被相同的本地计算机中的jconsole监视的应用程序,可以使用下面的系统属性:

Java -Dcom.sun.management.jmxremote -jar Java2Demo.jar

  并且,为了通过JMX监视它,而不需要验证,可以:

java -Dcom.sun.management.jmxremote.port=5001 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar Java2Demo.jar

  想了解如何简单地使用新的应用编程接口,下面记录了在HotSpot JVM中的内存堆栈的使用方法。

import java.lang.management.*;
import java.util.*;
public class MemTest
{
 public static void main(String args[])
 {
  List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans();
  for (MemoryPoolMXBean p: pools)
  {
   System.out.println("Memory type="+p.getType()+" Memory usage="+p.getUsage());
  }
 }
}

  新的JVM应用编程接口(JSR - 163)

  这个版本中还包含了一个更加强大的本地应用编程接口,名为JVMTI。这个应用编程接口通过JSR - 163确定。然而,JVMTI是用来涵盖整套的本地访问的处理工具,除了简介以外还有监视、调试和潜在的各种其它代码分析工具。

  这个实现包括用于字节码实现的机制,Java程序语言实现服务( JPLIS)。这可以使分析工具只在需要的地方添加补充的简介。这种方法的好处是它允许更具体的分析并且限制了运行的JVM上的简介工具的干扰。这个工具甚至可以可以在运行期间动态地生成,此外还可以在类装载期间,作为类文件进行预处理。

  下面的示例创建了一个工具钩子,它可以从磁盘加载类文件的一个已修改的版本。要运行该测试,可利用 java -javaagent:myBCI BCITest 启动 JRE。

//File myBCI.java import
java.lang.instrument.Instrumentation;
public class myBCI
{
 private static Instrumentation instCopy;
 public static void premain(String options, Instrumentation inst)
 {
  instCopy = inst;
 }
 public static Instrumentation getInstrumentation()
 {
  return instCopy;
 }
}
//File BCITest.java import java.nio.*;

import java.io.*;
import java.nio.channels.*;
import java.lang.instrument.*;
public class BCITest
{
 public static void main (String[] args)
 {
  try
  {
   OriginalClass mc = new OriginalClass();
   mc.message(); FileChannel fc=new FileInputStream( new File("modified"+File.separator+"OriginalClass.class")).getChannel();
   ByteBuffer buf = fc.map(FileChannel.MapMode.READ_ONLY, 0, (int)fc.size());
   byte[] classBuffer = new byte[buf.capacity()];
   buf.get(classBuffer, 0, classBuffer.length);
   myBCI.getInstrumentation().redefineClasses( new ClassDefinition[] {
    new ClassDefinition(mc.getClass(), classBuffer)});
   mc.message();
  }
  catch (Exception e){}
 }
}
//OriginalClass.java
//Compile in current directory
//Copy source to modified directory,change message and recompile

public class OriginalClass
{
 public void message()
 {
  System.out.println("OriginalClass");
 }
}

  如果没有可用的控制台窗口,那么生成的堆栈追踪就很困难。两个新的API——getStackTrace和Thread.getAllStackTraces——以程序的方式提供该信息。

StackTraceElement e[]=Thread.currentThread().getStackTrace();
for (int i=0; i <e.length; i++)
{
 System.out.println(e[i]);
}
System.out.println("\n"+Thread.getAllStackTraces());

  HotSpot JVM包括一个致命错误处理程序,如果JVM出现故障,可以运行一个用户提供的脚本或者程序。调试工具还可以使用HotSpot JVM的可维护性代理连接器连接到一个挂起的JVM或者核心文件。

-XX:OnError="command" -XX:OnError="pmap %p" -XX:OnError="gdb %p"optional %p used as process id


上一页  1 2 3 4 5  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
,Java相关内容,Java焦点新闻
  • JBuilder+WebLogic实现教材管理系统
  • 用Java实现HTTP文件队列下载
  • Java编程中更新XML文档的常用方法
  • JDBC基础教程之CallableStatement
  • JDBC基础教程之PreparedStatement
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,JavaAdvertisement