内存泄漏必定会导致内存溢出

内存调优工具

内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。
在这里插入图片描述
在这里插入图片描述

内存调优思路

对JVM内存的系统级调优主要的方法是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占用很多的系统资源(主要是CPU),影响系统的吞吐量。

内存调优手段

调优手段主要是通过控制堆内存的各个部分的比例和GC策略来实现,

一般情况下,堆内存,新生代和老年代的比例为1:2.

新生代中又分为三个区,分别为Eden,From Survivor,To Survivor,他们的比例一般为8:1:1.

JVM提供两种较为简单的新生代和旧生代GC策略。

  1. 吞吐量优先

    JVM以吞吐量为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,来达到吞吐量指标。

  2. 暂停时间优先

    JVM以暂停时间为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,尽量保证每次GC造成的应用停止时间都在指定的数值范围内。

内存泄漏和内存溢出

内存泄露 memory leak

程序申请内存后,无法释放已申请的内存空间.

简单理解:把申请的空间地址搞丢了,自己不知道,系统也不知道,系统不能将其分配给需要的程序.

内存溢出 out of memory

程序在申请内存时,没有足够的内存空间供其使用.

简单理解:申请的内存太小了,放不下我们所要存放的数据,就会溢出.

两者比较

我们一般都用上厕所来比喻:

内存泄漏,用粗俗一点的话来说就是“占着茅坑不拉粑粑”。

一共五个坑位,有两个人便秘,一直蹲着,公司那么多人就用三个坑位,对那两个人没办法,两个坑位泄漏了。

内存溢出,一共五个坑位,一百个人硬要上,挤挤吧。或者说,一个盘子只能装5个水果,你非要装6个,结果只能掉地上,不能吃,这就是溢出.

两者关系

内存泄漏必定会导致内存溢出.

猜你喜欢

转载自blog.csdn.net/numbbe/article/details/109321661