我的VPS有问题。我有一台使用Spring Boot和Java创建的服务器。最初,我将-Xms默认设置为-Xmx4G。在客户端上多次致电后,出现此错误:
**Exception in thread "https-jsse-nio-80-exec-1743" java.lang.OutOfMemoryError: GC overhead
limit exceeded at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.String.substring(Unknown Source)
at org.apache.tomcat.util.net.AbstractEndpoint.getSSLHostConfig(AbstractEndpoint.java:355)
at .**
使用JMeter并打开JMC之后,我创建了2000个请求线程,并且可以看到服务器可以正常工作。在JMC上,堆空间由GC清除,但是在任务管理器中,Java的内存增加了,我认为问题是当我的VPS的RAM增加更多时。因此,当我的VPS的RAM饱和时,Java会抛出GC异常。你能帮助我吗?在此处输入图片说明
当应用程序花费98%的时间进行垃圾回收时,JVM会抛出此错误。当您创建一个非常大的数组并继续销毁它时-GC可能会清理您的内存,但是GC太忙了,JVM会引发此错误。任务管理器显示了内存的增加,因为即使在GC清理了垃圾堆之后,仍然创建了数组并躺在无法清除的内存中。在这种情况下,您实际上需要破坏进程并清理内存。
您肯定必须了解这一事实,但想提一提-在任何时间创建如此大的数组也不是一个好的编码。选择流或缓冲的读取器来处理大数据而不是在堆内存中存储大数据总是好事。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句