易截截图软件、单文件、免安装、纯绿色、仅160KB

java性能分析

    原文地址:http://www.javaeye.com/topic/626801 一直赞叹Sun对待技术的严谨和优雅(可怜的Sun)。Sun JDK中Java库的源代码,连注释都清清楚楚、规规范范,javadoc注解的使用也一丝不苟,读起来很熟舒服。因此,在日常工作和学习中,经常读读 Java库的源代码,不亦乐乎?如果遇到诡异问题,源代码的帮助就更大了。     闲话少说,回归正题。这几天,一直在为Java的“内存泄露”问题纠结。Java应用程序占用的内存在不断的、有规律的上涨,最终超过了监控阈值。福尔摩斯不得不出手了!     说起Java的内存泄露,其实定义不是那么明确。首先,如果JVM没有bug,那么理论上是不会出现“无法回收的堆空间”,也就是说C/C++中的那种内存泄露在Java中不存在的。其次,如果由于Java程序一直持有某个对象的引用,但是从程序逻辑上看,这个对象再也不会被用到了,那么我们可以认为这个对象被泄露了。如果这样的对象数量很多,那么很明显,大量的内存空间就被泄露(“浪费”更准确一些)了。     不过,本文要说的内存泄露,并不属于上述原因,因此打上了引号。其具体原因,确实出乎意料。欲知详情,请看下面讲解。 分析内存泄露的一般步骤     如果发现Java应用程序占用的内存出现了泄露的迹象,那么我们一般采用下面的步骤分析 把Java应用程序使用的heap dump下来 使用Java heap分析工具,找出内存占用超出预期(一般是因为数量太多)的嫌疑对象 必要时,需要分析嫌疑对象和其他对象的引用关系。 查看程序的源代码,找出嫌疑对象数量过多的原因。 dump heap     如果Java应用程序出现了内存泄露,千万别着急着把应用杀掉,而是要保存现场。如果是互联网应用,可以把流量切到其他服务器。保存现场的目的就是为了把运行中JVM的heap dump下来。     JDK自带的jmap工具,可以做这件事情。它的执行方法是: Java代码 jmap -dump:format=b,file=heap.bin   jmap -dump:format=b,file=heap.bin
    format=b的含义是,dump出来的文件时二进制格式。
    file-heap.bin的含义是,dump出来的文件名是heap.bin。
    就是JVM的进程号。
    (在linux下)先执行ps aux | grep java,找到JVM的pid;然后再执行jmap -dump:format=b,file=


相关文档:

java方法传值和传引用

某知名门户网站的一道笔试题
public class Test {
public static void stringUpd(String str) {
str = str.replace("j", "l");
System.out.println(str);
}

public static void stringBufferUpd(StringBuffer bf) {
bf.append("c");
System.out.println(bf);
}

......

java 面试题 2

Jsp
方面
jsp的常用的命令答:page, include, talib, forward,
Servlet
方面
1
、说一说
Servlet
的生命周期
?
答:servlet有良好
的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的
init,service和destroy方法表达。
2

Servlet
版本间
(
忘� ......

Java获取客户端真实IP地址的两种方法

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。
  
Tag:Java 客户端 真实IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情� ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号