仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 477|回复: 12
打印 上一主题 下一主题

[学习教程] JAVA网站制作之Java SE 6在Solaris的可察看性特性剖析...

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?  Java平台尺度版(JavaSE)6,代码名为"Mustang",是最新的JavaSE刊行版本(正在开辟中)。JavaSE6源码和二进制代码都能够在www.Java.net高低载。JavaSE6平台要到2006年秋季才干正式公布。不外,如今你能够下载试用JavaSE6Beta版。

  JavaSE6平台中供应了多种可察看性(observability)工具,这个中的很多工具都可在体系中运转,而这些工具中的只要少少数被用于挂起历程或中心复制处置。因而,在本文中,我们将剖析这些可察看性工具在历程上的效果。

  1、在JavaSE6平台中的可察看性工具-DTrace

  在JavaSE6软件中又引进了很多可察看性改善功效。只管个中年夜多半可合用于一切的平台,可是个中的一些改善仅是特定于Solaris操纵体系(出格针对Solaris10及更高版本)的。在J2SE5.0平台中,引进了一种新的静态跟踪(DTrace)举动――Jstack。正如我们已懂得的,Jstack可以打印夹杂形式仓库跟踪信息(Java和本机C/C++言语是以帧体例显现的)。当从一个给定的Java历程中收回pollsys体系挪用时,以下D剧本将输入对夹杂形式仓库的跟踪信息:

#!/usr/sbin/dtrace-s
syscall::pollsys:entry
/pid==$1/{
/*打印最多50帧*/
jstack(50);
}
  上面是下面剧本的运转了局:

libc.so.1`__pollsys+0xa
libc.so.1`poll+0x52
libjvm.so`intos_sleep(longlong,int)+0xb4
libjvm.so`intos::sleep(Thread*,longlong,int)+0x1ce
libjvm.so`JVM_Sleep+0x1bc
java/lang/Thread.sleep
dtest.method3
dtest.method2
dtest.method1
dtest.main
[...篇幅所限,删往了一些输入了局...]
  实在,Jstack就是Java可察看性在Solaris10OS及以上版本中的一个很有效的出发点。可是,JavaSE6中远不止这些,它新增添了很多针对Java假造机(JVM)可察看性和Java使用程序可察看性的Dtraceprobe。JavaSE6刊行中增添两种JVM特定的DTrace供应者-hotspot和hotspot_jni。

  2、hotspot供应者

  hotspot供应者增添了很多探针,它们能够大抵地作以下分类:

  ・VM性命周期探针-VM启动,封闭事务

  ・线程性命周期探针-线程启动,中断,等等

  ・类加载探针-一个Java类加载或卸载

  ・渣滓搜集探针-GC启动,停止

  ・办法编译探针-Java字节码-到-本机代码编译("hotspot编译")

  ・监督器探针-Java监督合作性出口,关照,关照全体,等等

  ・使用程序探针-Java对象分派,Java办法出口/前往,等等

  有关于这些探针的更加具体的信息,请参考KeithMcGuigan的博客。上面是利用这些探针的一些示例。

  (一)打印Java线程的称号

hotspot$1:::thread-start{
self->ptr=(char*)copyin(arg0,arg1+1);
self->ptr[arg1]=;
self->threadname=(string)self->ptr;
printf("Thread%sstarted
",self->threadname);
}

  (二)在D剧本中的-verbose:class等价物

  你大概已利用过-verbose:classJVM选项。当一个Java类加载或卸载时,这个选项可以使JVM打印一个跟踪动静。上面是利用Dtrace失掉不异了局的情形:

/*当每一个类加载时,打印出其各自的称号*/
hotspot$1:::class-loaded{
self->str_ptr=(char*)copyin(arg0,arg1+1);
self->str_ptr[arg1]=;
self->name=(string)self->str_ptr;
printf("class%sloaded
",self->name);
}
  (三)打印非常中的栈跟踪信息(除夹杂形式)

  Throwable.printStackTrace()办法打印一个包括Java帧的仓库跟踪。这个D剧本将打印Java代码,Java本机接口(JNI)代码,C/C++代码和OSC/C++代码的一切的帧-不管什么时候激发一个破例。

hotspot$1:::method-entry{
 self->ptr=(char*)copyin(arg1,arg2+1);
 self->ptr[arg2]=;
 self->classname=(string)self->ptr;
 self->ptr=(char*)copyin(arg3,arg4+1);
 self->ptr[arg4]=;
 self->methodname=(string)self->ptr;
}
hotspot$1:::method-entry
/self->classname=="java/lang/Throwable"&&self->methodname=="<init>"/{
 jstack();
}
  在Java代码中的一切的非常和毛病都间接或直接地派生自java.lang.Throwable,因而一切的非常机关器最初都将挪用java.lang.Throwable的机关器。这个D剧本创建一个办法出口探针-利用一个针对该机关器的过滤器(注重,<init>是机关器办法的外部名)。当挪用这个机关器时,jstack()举动将打印夹杂形式仓库跟踪。

  (四)Java堆直方图

  我们可使用object-alloc探针来构建一个Java堆直方图,以下所示:

hotspot$1:::object-alloc{
 self->str_ptr=(char*)copyin(arg1,arg2+1);
 self->str_ptr[arg2]=;
 self->classname=(string)self->str_ptr;
 @allocs_count[self->classname]=count();
 @allocs_size[self->classname]=sum(arg3);
}
  (五)hotspot_jni供应者

  JNI同意Java程序与C/C++代码举行交互。假如你想察看Java代码与本机代码的交互,你可使用hotspot_jni供应者。关于每个JNI函数输出/输入而言,这个供应者将表露一个探针。

  (六)在Java程序中利用Dtrace的效果

  Dtrace被计划为一种临盆形式可察看性体系(未利用时具有零影响)。当撑持探针时,被察看的体系不受影响。

  因为年夜部分的由hotspot和hotspot_jni供应者所表露的JVM探针都是轻量级的,因而能够用于临盆呆板中。但是,一些由hotspot供应者所表露的探针请求利用一个特定的命令行选项"-XX:+ExtendedDTraceProbes"来启动JVM。这些探针分离是:Java办法出口/办法前往,对象分派和Java监督器探针。注重,这些探针都请求改动hotspot字节码注释器和hotspot编译器(字节码-到-呆板代码编译器)。即便不被撑持时,这些探针的价值也是对照高贵的。
  3、在JavaSE6平台中的可察看性工具

  除Dtrace与Java手艺的集成以外,JavaSE6刊行中还包括了很多别的的可察看性工具。上面总结了这些工具,个中还包括一些更加具体的链接申明。

  (一)JConsole

  JConsole利用JVM的可扩大性Java办理扩大(JMX)工具来供应关于运转于Java平台的使用程序的功能和资本损耗的信息。

  在J2SE5.0软件中,你必要启动利用-Dcom.sun.management.jmxremote选项监控的使用程序。注重:在JavaSE6软件中,不再有这一请求。当启动该使用程序时,不必要特定的命令行选项。

  在临盆体系中的使用

  JConsole启动一个在被察看的Java程序的JVM外部的JMX代办署理。运转别的一部分代码唯一一点极微小的影响-可是影响很小。

  别的,只管JConsole在监督当地使用程序的开辟和疾速原型开辟中很有效,但在实践的使用体系中不保举利用。来由是,JConsole自己也损耗大批的体系资本。我们保举的办法是用远程监控来把JConsole使用程序与被监控的体系加以断绝。因而,关于使用体系来讲,以远程形式利用JConsole更好些。关于平安的远程监控来讲,可使用平安选项。

  (二)jps

  jps相称于Solaris历程工具ps。更多的信息,请参考《jps-JavaVirtualMachineProcessStatusTool》。

  不象"pgrepjava"或"ps-ef|grepjava",jps其实不利用使用程序名来查找JVM实例。因而,它查找一切的Java使用程序,包含即便没有利用java实行体的那种(比方,定制的启动器)。别的,jps仅查找以后用户的Java历程,而不是以后体系中的一切历程。

  (三)jstat

  jstat显现一个丈量(instrumented)JavaHotSpot假造机的功能统计信息(请参考《jstat-JavaVirtualMachineStatisticsMonitoringTool》)。有关于功能计数器的更具体的信息请参考《Codesample-jvmstat3.0》。

  (四)jstatd

  jstatd是一个Java远程办法挪用(RMI)服务器使用程序-它监控丈量JavaHotSpot假造机的创立和停止而且供应一个接口来同意远程监控工具依靠到运转于当地主机的JVM(请参考《jstatd-VirtualMachinejstatDaemon》)。

  在使用体系中的利用

  jps及别的jvmstat有用程序都利用极其轻量级的察看机制。由JVM分派一小部分共享内存,而功能计数器也是从这部份内存平分配的。JVM子体系基于其感乐趣的事务更新功能计数器。客户端工具仅仅卖力异步地从共享内存段中举行读取。因而,总的来讲,利用jvmstat举行监控的效果是很小的。
  4、JavaSE6平台中针关于Postmortem的可察看性工具

  JavaSE6撑持postmortem可察看性工具-它可以从挂起的Java历程或Java中心复制中取得信息。这些工具(除jhat外)都利用Solarislibproc库来依靠到和读取被察看的程序。在察看时代,方针程序被挂起。当Java历程被挂起或当从一个Java历程中产生一个中心复制时,可使用这些工具。在任何大概的情形下,请思索利用gcore来捕捉体系的中心复制的一个快照而且利用任何以下工具"离线"剖析中心复制。

  (一)jinfo

  jinfo打印一个给定的Java历程或中心文件或一个远程调试服务器的Java设置信息。设置信息包含Java体系属性和JVM命令行标记(更多信息,请参考《jinfo-ConfigurationInfo》)。

  (二)jmap

  jmap:假如这个工具不利用任何选项(除pid或core选项)运转,那末它显现相似于Solaris的pmap工具所输入的信息。这个工具撑持针对Java堆可察看性的多少别的选项。

  在JavaSE6平台中,新到场了一个-dump选项。如许可使jmap可以把Java堆信息复制到一个文件中,然后我们可使用新的jhat命令(见上面一节)来剖析它。

  jmap-dump选项其实不利用Solarislibproc来完成及时处置;而是,它运转以后正运转的JVM中的一小段代码,由此来完成堆复制。既然这类堆复制代码运转于JVM外部,那末其速率是对照快的。堆复制的效果大抵相称于完成一次"完整的GC"(对全部堆的渣滓搜集),再加上把该堆的内容写进到文件中。完成堆复制的别的一种大概的思绪是利用gcore来举行中心复制而且运转"jmap-dump"(这与以"离线"体例运转的中心复制构成对比)。

  (三)jstack

  jstack等价于Solaris的pstack工具。jstack打印一切的Java线程的仓库跟踪信息(可选地包含本机帧信息),请参考《jstack-仓库跟踪》。关于锁和逝世锁的信息也能够被打印,请参考java.util.concurrentlocks。

  (四)jsadebugd

  jsadebugd依靠到一个Java历程或中心文件而且承当一个调试服务器的感化。远程客户,比方jstack、jmap和jinfo,都可以经由过程JavaRMI依靠到该服务器。

  (五)jhat

  jhat是一个Java堆复制扫瞄器。这个工具剖析Java堆复制文件(比方,由下面的"jmap-dump"所发生的)。Jhat启动一个同意堆中的对象在web扫瞄器中举行剖析的web服务器。这个工具并非想用于使用体系中而是用于"离线"剖析。"jhat工具是平台自力的",其意义是,它能够被用来察看在任何平台上所发生的堆复制。比方,我们有大概在Linux体系上利用jhat来察看一个在SolarisOS上所发生的堆复制。

用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?
只想知道 该用户已被删除
沙发
发表于 2015-1-29 14:35:20 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
飘灵儿 该用户已被删除
板凳
发表于 2015-2-2 20:43:50 来自手机 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
若天明 该用户已被删除
地板
发表于 2015-2-8 04:55:58 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
若相依 该用户已被删除
5#
发表于 2015-2-10 11:45:22 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
海妖 该用户已被删除
6#
发表于 2015-3-1 10:15:07 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
乐观 该用户已被删除
7#
发表于 2015-3-2 19:41:23 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
小妖女 该用户已被删除
8#
发表于 2015-3-2 19:46:37 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
简单生活 该用户已被删除
9#
发表于 2015-3-4 07:20:17 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
谁可相欹 该用户已被删除
10#
发表于 2015-3-7 19:23:41 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
不帅 该用户已被删除
11#
发表于 2015-3-11 00:56:18 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
柔情似水 该用户已被删除
12#
发表于 2015-3-17 17:10:54 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
admin 该用户已被删除
13#
发表于 2015-3-24 14:04:47 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 02:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表