yourkit分析java性能
项目需要分析整个系统的上线运行性能,所以现在离上线还早,但是必须模拟并发现以后可能出现的性能问题.
两个比较好的工具:JProbe,yourkit java profile,刚开始装了Jprobe的eclipse插件,后来发现这东西太复杂,而且还报不支持jdk 1.6.没法发看到大多数网友选择yourkit,所以也下了来,毕竟不大,结果发现他有很完整的文档和flash教程,仔细研究了一番才知道这个东西很符合需求,包括教你怎么识别mem leak,cpu 高负荷等问题.
cpu分析一般就是你程序里面的计算比较耗cpu时间,其实除了优化算法本身以外,还可以在cpu的其他时间计算,这个就需要单独的线程切换,而线程切换所带来的消耗也很可观,这种方案不大可取.
还有一点就是他还可以直接与eclipse结合,装上插件以后就可以直接定位到方法,可以先让他纪录你的cpu,然后开始抓取快照,取到最高的点,然后就可以看到那个类的哪个方法消耗了太多cpu时间,并且马上定位到方法.
个人认为,对算法优化和数据库优化会比较好,单个线程会在sql比较慢的时候阻塞住,这个时候消耗的cpu时间是可观的,这样马上就可以发现异常.然后定位到代码,就可以修改了.
至于mem leak,他的demo flash也讲的很详细,但是有些功能没有说,他也不需要纪录,直接抓取你想要的(这点不太明白,可能需要进一步研究),然后让程序跑起来,可以看到内存里一下子类多了起来,然后退出,这个时候内存下降的不明显,就说明可能有溢出,但是其实这个不太好定量,所以我觉得一般的作法就是看有多少类被释放了.在代码里面应该有多少类创建,如果你退出的话应该将所有类释放掉,然后用它里面的garbage回收一下,看看是不是都回收了.在这里我就是发现代码在很重要的一个类里面没有回收,其实这个如果用户量巨大的话量是很可观的,这个可以预见到.然后就可以修改代码了,再测试.
当然对于他的sql功能还不知道怎么用,文档里面说主要用户j2ee.但是我想应该可以用到app里面.
很赞的一点是可以远程查看状态,这样即使你的部署不是本地的也没有关系,不用远程上去看.
这里内存泄漏可以遇见到以后肯定会有爆棚的一天,所有肯定是一个隐患.不过有些类的确就是常驻在内存里面的,一开始分配了以后都会用到,但是不会随用户的增加而增加.所以这一点可能单例模式会马上体现出来,而且自己实现的对不对也可以一眼看出来,如果不正确,累的数量肯定非常大.
如果加上对于网络的测试,估计yourkit就无敌了,原来只是通过自己的测试脚本发现一些死锁等问题,但是具体还是不好测试,发现不了内存泄漏
所以jav
相关文档:
1.创建测试表
create table users(
userid int primary key,
username varchar2(20),
userpwd varchar2(20)
);
insert into users values(1,'test','test');
insert into users values(2,'test','test');
insert into users values(3,'test','test');
insert into users values(4,'test','test');
insert i ......
JAVA Calendar详解
(在文章的最后,将会介绍Date类,如果有兴趣,可以直接翻到最后去阅读)
究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历、阴(农)历之分。它们的区别在哪呢?
比如有:
月份的定义 - 阳`(公)历 一年12 个月,每个月的天数各不同;阴(农)历,每个月固定28 ......
package com.down.servlet;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import java ......
Java IO的一般使用原则:
一、按数据来源(去向)分类:
1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter
2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream
3、是Char[]: CharArrayReader, CharArrayWriter
4、是String: StringBufferInputStream, StringReader, StringWriter
5、 ......