通过前文可知,内存分为虚拟内存和物理内存两个部分,虚拟内存是通过mmap函数申请的内存,并没有真正写入数据,物理内存是写入数据后才会消耗的内存。虚拟内存或物理内存的任何一部分的消耗超过阈值,都会导致OOM发生,所以我们做内存优化时首先要明确优化的是虚拟内存还是物理内存。如果优化的是物理内存,那么优化方向又可以分为Native内存和Java堆内存。不管是虚拟内存还是物理内存,优化方法论都是一样的,主要包括以下3个方向:
❑及时清理数据;
❑减少数据的加载;
❑增加内存大小。 U20oxYLiHoU8McjNvcz6uMh75hjCvx9tA8na4cS6VKnM5lbyypF7uJ7Pu72QR6CW