JAVA会产生内存泄露吗?首先,答案是肯定的。Java虽然有垃圾回收器,但依然存在泄漏。
Java内存泄漏跟C/C++内存泄漏的概念不一样:C/C++的内存泄漏是指Malloc了一些资源,最后没有free掉,内存没有回收,这个是真正意义上的内存黑洞;而Java的泄漏指,Java对象的存在对程序已经没有意义,但是对象在程序周期内一直存在,这个可能会导致Java的内存泄漏。
总结原因,大概...
分类:
编程语言 时间:
2014-10-21 19:36:42
阅读次数:
254
1、检测系统可以设置的内存大小
java -Xmx1024M -version
(其中1024表示检测内存是否可以调整到这个数)
2、设置tomcat内存
在tomcat_home/bin/catalina.bat(win)或者tomcat_home/bin/catalina.sh(linux)文件中首行加入:
set JAVA_OPTS=-Xms1024m -Xmx1024m
...
分类:
其他好文 时间:
2014-10-17 17:00:37
阅读次数:
191
起因是我们的集群应用(3台机器)新版本测试过程中,一般的JVM内存占用 都在1G左右, 但在运行了一段时间后,慢慢升到了4G, 这是一个明显不正常的现象。定位 过程:1.先在该机器上按照步骤尝试重现现场,当发生问题后打开一台机器上JDK的jvisualvm观察JVM内存占用情况,这时明显看到GC很密...
分类:
其他好文 时间:
2014-09-30 17:26:59
阅读次数:
235
如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe。JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数。再通过JDK提供的工具的统计结果,就比较容易理解这些内存分配的理论知识。运行环境是win7 32位操作系统,JDK1.7.0_60版本。可以发现:堆内存、新生代内存、老年代内存、永久代内存,都有一个初始内存,还有一个最大内存。...
分类:
其他好文 时间:
2014-09-17 21:56:42
阅读次数:
377
我使用的JDK版本是1.6.0_37版本,操作系统是windows xp,今天想使用下%JAVA_HOME%/bin/目录下的一些管理工具,结果遇到麻烦了。使用JPS命令,无法列出本地运行的java虚拟机;使用jvisualvm,提示"无法检测到本地java应用程序"。
这个问题的原因可以看下:http://docs.oracle.com/javase/1.5.0/docs/guide/mana...
分类:
编程语言 时间:
2014-09-15 22:53:39
阅读次数:
1334
基于Sun HotSpot JVM? ? 这里将介绍几款sun hotspot jvm 自带的监控工具: 请确保java_home/bin配置到path环境变量下,因为这些工具都在jdk的bin目录下 ? jps(JVM Process Status Tool):JVM机进程状况工具 用...
分类:
编程语言 时间:
2014-09-12 12:07:13
阅读次数:
410
DK自带VM分析工具jps,jstat,jmap,jconsole 一、概述 ??? SUN 的JDK中的几个工具,非常好用。秉承着有免费,不用商用的原则。以下简单介绍一下这几种工具。(注:本文章下的所有工具都存在JDK5.0以上版本的工...
分类:
其他好文 时间:
2014-09-09 20:15:09
阅读次数:
364
1、在$CATALINA_HOME/bin/startup.sh 倒数第二行(也就是exec "$PRGDIR"/"$EXECUTABLE" start "$@"一行上边)加上如下内容:export CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management....
分类:
其他好文 时间:
2014-08-08 12:26:15
阅读次数:
303
(1)引用计数法
这是最经典和最古老的一种,它的工作原理是为每个对象配备一个计数器,只有这个对象被引用了,引用计数器就加1,当引用失效时,计数器减一,只要计数器为0,意味着不再被使用,于是该对象就可以被回收了。
优点:实现简单;
缺点:无法处理循环引用情况。即有应该被回收的垃圾对象A、B,他们互相引用,除此之外无其他引用,然而他们计数器值不是0,因此无法回收,从而造成内存泄漏。
(2...
分类:
编程语言 时间:
2014-08-02 18:31:14
阅读次数:
257
今天想用jvisualvm调试下Tomcat,却发现jvisualvm中找不到Tomcat,原来是因为Tomcat的临时目录设置问题。jvisualvm是通过pid来查找本地java应用的,pid文件存放在临时目录下的hsperfdata_<username>文件夹下。而T...
分类:
其他好文 时间:
2014-07-30 12:34:54
阅读次数:
203