我有两个 Web 项目在 Tomcat 7.0.5 中运行。 第一个项目托管在第二个项目中使用的服务(Web 服务)。 这两个项目都有单独的数据库,但在同一个 Mysql 服务器实例上。 使用的技术有Spring、Hibernate。数据库是Mysql。服务器是 Apache Tomcat 7.0.5 最初一切正常。 随着更多记录(1-20 万)被添加到数据库中,它开始在线程“ajp-9009-AsyncTimeout”java.lang.OutOfMemoryError 中给出 OutOfMemoryError 异常和异常:Java 堆空间错误。 我用谷歌搜索错误,根据解释的解决方案我更新了 Catalina.bat 文件如下
set JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1536m -Xmx1536m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"
和
set CATALINA_OPTS=-server -Xms256m -Xmx1024m
但对我来说没有任何效果。 如何摆脱上述错误..? 我做错了什么..? 我还有一个查询,Web 服务是否返回数十万记录..?
最佳答案
如果没有具体信息,就很难确定您的问题。
我会看看像 YourKit 这样的工具来分析你的应用程序(你可以获得 30 天的免费试用,ISTR)和 VisualVM 来深入了解你的 JVM。
但是,如果您的网络服务获取 100,000 条记录,将它们呈现为 XML/JSON 并在一个请求/响应中将它们发送出去,那么需要从数据库、编码和发送。我会调查该设计,看看这是否是根本问题。
关于Java "ajp-9009-AsyncTimeout"java.lang.OutOfMemoryError : Java heap space Errors 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18331368/