喜欢研究学习技术,喜欢和志同道合的人交流。 从事测试6年,专职性能3年经验,擅长性能测试,测试框架开发。 励志格言:只要想学习,永远都不会太晚;只要想进步,永远都会有空间。

关于内存监控分析的正确理解

上一篇 / 下一篇  2018-06-20 10:39:24 / 个人分类:性能测试

网 上乃至身边的人一直传言或问,请问内存使用率超过百分之多少就是内存存在问题呢?对此类的问题表示很犹豫。关于内存的正确监控及用法,我只想说以下几个方面。

1、内存使用率超过百分之多少就是异常,这种说法,肯定是错误的。
2、内存异常之一:实际物理内存不足。
3、内存异常之二:内存泄露。


为什么说内存使用率超过百分之多少就是错误?来举一个简单的例子说明
一服务器的实际物理内存为4G内存大小空间,此时服务器上运行A系统。设置A系统的运行初始的XMS最小堆内存空间为3个G内存,当A系统启动时,JVM就会向操作系统申请内存空间,初始从xms的堆内存中值获取堆内存,若此次A系统对内存的消耗就需要3个内存,当系统一启动就消耗了整个系统的75%的内存资源,此时A系统还未做任何业务性操作,此时能说明内存存在内存异常了嘛!!!NO NO NO 。

首先说实际物理内存不足, 一个方面应用程序实际对内存消耗确实是过大造成,这个可以通过优化程序代码来减小对内存空间的消耗。
当然当实际物理内存不足时有哪些表象呢?
1、手动访问应用程序,系统访问明显响应变慢。
2、通过top命令,可观看 used 和
free当前已使用和内存空间大小,和剩余空间大小是否合理。
3、实际物理内存不足,此时定会与磁盘产生交互,读取磁盘上的虚拟内存空间,同时
Swap分区值增大,不断的回收buffers,与cache缓存空间,以及IO 的 read 和write值也会增加,从而增大磁盘的util繁忙程度。此时表现,物理内存真正不足。
4、实际物理内存不足,只能通过增加物理内存,或者调优应用程序来减少对内存资源的消耗来解决。

关于内存泄露
 简单理解:内存泄露就是内存空间没有释放导致,如某个对象不断的进行创建,最后没有进行引用的关闭,导致jvm无法正常进行垃圾回收空间。只要存在内存泄露的现象,无论系统有多大的内存大小,无论是2G 3G 4G 还是128G,物理内存都会被消耗光,只是时间的问题而已。

内存的监控(关于内存的监控分析可以通过以下方式)
1、top命令监控(综合查看)。
2、jmap监控应用程序对堆内存的资源消耗,以及对象的创建情况。
3、通过jconsole jvisualvm来监控JVM堆堆内存的使用情况,看内存是否正常创建以及回收。
4、通过jprofile,MAT等内存分析工具,来分析内存泄露的情况。 


TAG:

 

评分:0

我来说两句

Open Toolbar