1

一次因生产事故与chatGpt的对话 - 爱我-中华

 1 year ago
source link: https://www.cnblogs.com/jinliang374003909/p/17269665.html
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.

一次因生产事故与chatGpt的对话

一次因生产事故与chatGpt的对话

前言:生产出现了一个内存溢出的事故,记录错误信息。错误日志如下
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.2.11.RELEASE.jar!/:5.2.11.RELEASE]
	..........
1596007-20230329171903591-664207237.png
1596007-20230329171914844-1130887229.png
1596007-20230329171928723-1252230606.png
1596007-20230329171938759-2005913739.png
1596007-20230329171949566-1540704570.png
1596007-20230329171959821-1084210894.png
1596007-20230329172009059-1711496486.png
1596007-20230329172018729-1784238589.png
1596007-20230329172027033-181579980.png
1596007-20230329172035823-1840985406.png

知识小结:

1. Java运行参数

堆 :是JVM 运行时一块内存区域,用于存储创建的对象和数组。当需要创建新对象时,JVM 会在堆空间中分配一块连续的空闲区域,用于存储该对象。

  1. -Xms :用于指定堆空间的初始值
  2. -Xmx :用于指定堆空间的最大值,过小容易出现OutOfMemoryError,
  3. -Xmn :设置新生代堆的大小,在整个堆大小(包括新生代堆和老年代堆)已经被设置的情况下。它的默认值通常是整个堆大小的 1/4 或者 1/8。
  4. -XX:+UseG1GC :使用 G1 垃圾回收器。G1 垃圾回收器是 Java 7 中引入的一种新的垃圾回收器,适用于大内存应用程序,并且能够在较短的停顿时间内处理大型堆。
2. 监控与计算服务器内存
  1. free 静态显示内存使用情况,可直接用于计算内存使用率。

  2. top 可动态监控,且可查看某些进程的使用情况

​ 3. 内存使用率的计算公式,若内存使用率超过 70%,就容易发生内存溢出

Memory Usage = (MemTotal - MemFree - Buffers - Cached) / MemTotal * 100
3. 事故解决方案
  1. 加大最大堆值Xmx ,原是512m 后增之1024m。
  2. 内存使用率超过 70%(约为75%),建议增加内存。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK