当前位置: 首页 > 知识库问答 >
问题:

tomcat中的UncaughtExceptionHandler

苗森
2023-03-14

我在执行我的 Web 应用程序时在 tomcat 源中出现内存不足错误。

java.lang.OutOfMemoryError: Java heap space

java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at com.source.server.wc.common.SupportAction.execute(SupportAction.java:252)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.source.server.wc.common.AuthenticationFilter.doFilter(AuthenticationFilter.java:300)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.source.server.wc.common.EncodingFilter.doFilter(EncodingFilter.java:70)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)    

我添加了Thread.currentThread()。setDefaultUncaughtExceptionHandler(new oo mehandler());在我的主线程中,当从webclient执行任务时,我得到了OOMError,但是OOMError没有被UncaughtExceptionHandler捕获。

我怎么才能抓住它?

共有1个答案

林夕
2023-03-14

UncaughtExceptionHandler 也将捕获 OutOfMemoryError。你似乎把它设置得恰到好处。因此,要么其他进程在之后调用它(您可以通过设置函数的断点进行检查),要么 TomCat 在您的线程上设置了自己的一个,您可以通过调用 Thread.currentThread().getUncaughtExceptionHandler() 来检查。如果未设置,这将返回 null

另请注意,setDefaultExceptionHandler() 是静态的,因此您不应该在对象上调用它,而应该在类上调用它,因此:

Thread.setDefaultUncaughtExceptionHandler(new OOMEHandler());

而不是

Thread.currentThread().setDefaultUncaughtExceptionHandler(new OOMEHandler());
 类似资料:
  • 我正在尝试在要部署在Tomcat 7中的Web应用程序中设置JNDI查找。我在文件中指定了以下属性: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory,java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces,java.naming.prov

  • 我正在将Eclipse Luna与Tomcat 8一起使用,并且被配置文件的不同位置弄糊涂了。 我已经在本地机器上安装了Tomcat,并在Eclipse中配置了Tomcat,如下所示: 因此涉及到4个目录 > a)catalina home:C:\ Program Files \ AppServers \ Tomcat 8 b) catalina库:C:\Users\xxx\projectname

  • 我有eclipse neon,它与Apache Tomcat 7正常工作,现在我想为tomcat的连接器设置URIEncode="UTF-8"。但是每次eclipse发布项目时,它都会重写server.xml文件并删除我的配置。 我想找到一种在EclipseTomcat设置页面中设置URIEncoding=“UTF-8”的方法。在common选项卡的launch configuration(在to

  • 我正在的上的上运行应用程序。对于那些不熟悉的人,每当发生SQS事件时,Amazon都会自动向我的Worker应用程序执行请求。我的应用程序然后处理请求并返回200(除非明显出错)。 我想在处理单个请求时使用并发。例如,假设我需要执行10种不同的昂贵计算。我希望使用让10个线程同时执行这项工作,而不是串行执行。 这是坏习惯吗?如果没有,以这种方式启动新线程是否存在性能危险 线程的分配实际上是如何工作

  • 问题内容: 首先,我有一个在主要方法中运行的OpenCV的基本示例。但是,如果我在Spring Web Controller中使用OpenCV,则会引发错误。 在STS(Spring Tool Suite)的 Tomcat 服务器中运行以下代码时,出现UnsatisfiedLinkError异常,并将问题归结为以下代码: 服务器和“主”应用程序的运行配置都包含指向OpenCV DLL的VM参数:

  • 我还得到警告19-jul-2017 13:04:49.941 warning[main]org.apache.catalina.core.standardserver.await standardserver.await standardserver.await standardserver.await standardserver.await standardserver.await stand