在运行java的过程中,我们会遇到各种各样的问题,比如java内存泄漏就是一个严重问题,如果不及时去解决的话,就会影响java开发,那java有没有内存泄露?接下来我们就来给大家讲解一下这方面的内容。
1、查看过程中的CPU和内存占用:
top –H –p 58527
2、查看服务器内存。
df -h 查看磁盘情况 du -h --max-depth=1 文件目录占用资源情况。
3、查看内存、缓存区、使用和闲置。
free -m
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
4、查看执行程序信息。
jstack 2829 > 1.log
grep -A 1'java.lang.Thread.State' jstack.log | wc -l
5、下载堆文件分析代码Dump。
java内存泄露是什么?
Java 中的内存泄漏是指应用程序不再需要的对象在 Java 虚拟机 (JVM) 中仍然存在的状态。当应用程序意外挂起不再需要的对象引用时,就会发生内存泄漏。随着时间的推移,内存泄漏会导致性能下降,因为应用程序对内存的使用增加了(并且是意外的)。
应该注意,垃圾收集器擅长定期收集没有被引用的对象。但是,它不收集那些仍在使用的对象,即仍有引用的对象。这正是内存泄漏发生的地方。为了有助于防止内存泄漏,重要的是设计程序的方式,使它们在不再需要内存时释放内存。
此外,程序员应该意识到潜在的内存泄漏,并确保对他们的程序进行彻底的测试。当发生内存泄漏时,程序会慢慢用尽越来越多的内存,直到最终崩溃。
所以java内存泄漏一定要重视,当然我们可以提前去检查以防有内存泄漏问题,如果内存泄漏不及时解决,就会呆导致程序崩溃哦!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。
推荐阅读:
hibernate框架如何入门?hibernate框架入门教程之hibernate核心接口