9

内存分析与相关工具下篇(常见问题分析)

 3 years ago
source link: https://kimmking.blog.csdn.net/article/details/108728953
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Java 程序的内存可以分为几个部分:堆(Heap space)、非堆(Non-Heap)、栈(Stack)等等,如下图所示:

2459010.png

最常见的 java.lang.OutOfMemoryError 可以归为以下类型。

OutOfMemoryError: Java heap space

JVM 限制了 Java 程序的最大内存使用量,由 JVM 的启动参数决定。

其中,堆内存的最大值,由 JVM 启动参数 -Xmx 指定。如果没有明确指定,则根据平台类型(OS 版本 + JVM 版本)和物理内存的大小来计算默认值。

假如在创建新的对象时,堆内存中的空间不足以存放新创建的对象,就会引发“java.lang.OutOfMemoryError: Java heap space”错误。不管机器上还没有空闲的物理内存,只要堆内存使用量达到最大内存限制,就会抛出这个错误。

原因分析

产生“java.lang.OutOfMemoryError: Java heap space”错误的原因,很多时候就类似于将 XXL 号的对象,往 S 号的 Java heap space 里面塞。其实清楚了原因,问题就很容易解决了:只要增加堆内存的大小,程序就能正常运行。另外还有一些比较复杂的情况,主要是由代码问题导致的:

  • 超出预期的访问量/数据量:应用系统设计时,一般

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK