收藏到: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网 QQ书签 更多 Bookmark and Share
显示标签为“Java”的博文。显示所有博文
显示标签为“Java”的博文。显示所有博文

2009年4月29日星期三

性能监控 以及 开发自动化 -- Java

前一阵在找性能监控的工具,自己对Java比较关注点,因此在java上找到一些工具,比较著名的就是JProfiler,在Java1.5以后,在JDK中也带有一些性能监控的工具,如jconsole等,还有一些开源的产品,但是JProfiler分析的程度比较深,因此使用的效果相对好点。
(十个最好的Java性能故障排除工具 : http://www.kuqin.com/developtool/20080721/11869.html

在进行性能监控工具的查找中,发现问题的根源很多时候还是出在开发上面,在开发时对性能不重视,以为Java有内存自动回收(gc)就万无一失了,对Java的内存分配方式、回收方式都不去了解它,造成开发出来的程序问题一大堆。

网上看到IBM有一个开发自动化的专题(以前看到过,但是没有这次这么有感触),要仔细的揣摩一下

  • CheckStyle 报告与项目预定的编码标准的偏离度。
  • CPD 报告代码重复。
  • JavaNCSS 可以帮助团队专注于更高级的代码复杂性领域。



2009年4月27日星期一

Tomcat遇到了“java.lang.OutOfMemoryError: PermGen space”

Tomcat中新增了一些功能后,原来正常的程序,在运行一段后,发生了一下错误:
Exception in thread "TP-Processor171" java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space

PermGen内存溢出。根据网上查了一下资料,发现这是sun JDK分代管理的一个问题 --- 当然,程序使用上也有讲究,但是程序上只能尽量避开这个问题,说解决的方式更换JDK,换成BEA JRokit。

Permanent Generation space,是指内存的永久保存区域,用于存放ClassMeta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放InstanceHeap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APPLOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。 如果你的WEB APP下都用了大量的第三方jar, 其大小 超过了jvm默认的大小(4M-- 这个值各个地方写的不一样,没有搞懂,要确切,到JDK提供的官方去查)那么就会产生此错误信息了。 


以下是网上的一些资料,
---------------------------------------------------
问题已经查明,这个和程序编写有关系。

当初不知道谁写的代码,当hibernate发生错误的时候,就重构一个hibernate的factory,每发生一次错误,就重构一次。这样每次重构的时候,都会造成PermGen的增长。把这个问题解决了,PermGen Size也没有溢出过。





2009年3月30日星期一

Mylyn+tasktop+Bugzilla+php+MySQL+Apache安装的一些技术点

1. Eclipse中安装插件:

a)可以通过Update的方式,从网上下载,直接安装在Eclipse的plugins和features目录中
b)下载插件的安装包,自己copy到plugins和features目录中
c)通过links方式安装:
在Eclipse目录中,创建一个links目录,里面的所有文件Eclipse都视为插件链接文件,不区分后缀。
文件内容格式: path=插件的目录
插件的目录格式:包含eclipse目录,eclipse目录再包含plugin和features目录

plugins目录:包含插件的jar文件
features目录:插件的加载和升级说明目录

d)分析从网上的升级目录:
目录中包含site.xml,升级首先读取这个文件,这个文件中说明了这个插件使用到多少features。
下载每个features的jar文件,分析其中的feature.xml文件,说明了feature使用到什么jar文件、以及相关联的jar文件,包括下载的目录。
如果不多自己手工下载一下就可以了,
如果关联的较多,可以在可以联网的机器上下载后,将下载的内容复制到不能上网的机器上

2.MySQL
在windows机器上安装的,没有什么好说的
用到了创建数据库:create database dbname
创建用户授权:一次性完成的:
grant all privileges on bugs.* to 'bugs'@'*' identified by 'bugs'
一直没有好好去看的:
创建用户后,还要用 grant all privileges on bugs.* to 'bugs' identified by 'bugs'重新创建一次
不知道bugs用户和bugs@localhost有什么不同,还是我什么地方理解有问题

3. Perl的安装
  从ActiveState下载Perl,有些bugzilla需要的包还需要进行perl升级,通过
  ppm install package的方式从网上进行升级
  有些package在activestate上没有,还需要加入其他的repository,如:
  ppm repo add theory58S http://cpan.uwinnipeg.ca/PPMPackages/10xx/

  如果连不到网,可以将已经升级好的perl目录直接复制过去,
  或者下载package包,按照文件方式升级(主要的问题是关联的包太多的话,很麻烦)

4. Apache + Perl
   apache连接perl,需要mod_perl
   缺省下载的bugzilla文件都是按照linux/unix下的方式生成的文件,在cgi和pl文件头部,都是指定#!/usr/bin/perl,放在windows下apache运行有问题,会生成权限错误。
  需要把cgi和pl文件头部的这一句话修改成本机上perl.exe的绝对路径,使用批量替换就可以了,替换好后apache执行perl没有问题
  --- 问题发现: apache安装后,自带的cgi-bin下的perl样例是好的,但是bugzilla的不可以访问,发现就是这个问题照成的

5.Apache2.2的目录配置
   不知道是否所有的apache都是这样(已经很长时间没有修改过apache配置了),在配置Directory中,要把配置的目录最后带上'/',apache在寻找文件是,是将配置的Directory直接加上URL中的文件名,如果配置的时候最后不带'/',则访问不到文件,出错

6.Bugzilla:
   用3.3.3版本的bugzilla,Mylyn+tasktop能够将配置的工程、模块导入,但是查询buglist无法完成,出错 --- 用2.22.7的bugzilla好的
   bugzilla安装,通过checksetup.pl --check-modules方式先检查一下安装的环境。
   再使用checksetup.pl生成localconfig文件
   手工修改localconfig文件后,再运行checksetup.pl在数据库中生成对应的表。





2009年3月24日星期二

和Eclipse-Mylyn结合的流程管理工具寻找

下载安装了Mylyn,可以在本地管理工作,并且保存每个工作的工作环境。对于个人工作确实不错,但是现在的工作基本上都是团队工作,应该有和Eclipse-Mylyn相结合的工作流程管理的工具,这样可以在一个Team中进行合理的工作分派,工作汇报。

在Mylyn本身的下载页面上,文档是指向TaskTop站点,TaskTop的Starter版本是free的,后台可以和Bugzilla、JIRA、CollaNet,Rally等。
其中就只有Bugizilla是免费的,其他都是要收费的商业软件,不考虑。
除了bugzilla, 还看到有trac,自己在网上也找了找,看到有一个EmForge,有Mylyn的Connector(http://www.emforge.org/project/EmForgeMyLynProvider)。

准备在这几个系统之间比较一下,看哪个更适合我们的使用。

原来bugzilla、trac原来的理解都是一个bug管理系统,现在看介绍也可以对任务的管理(希望是真正的任务管理,譬如一个任务有多个分支,多人同步进行,最后还可以合拢,任务有先后关系,先后依赖关系等。bug系统原来bug只能指派给一个人的)

Emforge看它主页上的介绍是一个workflow-based integrated solution for managing software development process。反正是free的,下来看一下。



2009年3月22日星期日

使用Mylyn

看了介绍,Mylyn是Eclipse的一个插件,用来管理任务以及和任务相关的上下文环境。

昨天安装试用了一下,感觉不错,可以将自己要做的事情按照时间、重要性等进行分类,同时将每个工作的关联的上下文环境(可以细致到函数)都保存下来,这样不需要每次都回忆上次做的工作,工作做到哪里了。

在使用,看介绍的时候,Mylyn还有一个tasktop,可以支持team工作(不同版本,支持的功能不同),有时间再看一下,这个对我们目前的工作帮助很大。