当前位置: 首页 > 面试题库 >

Java Appengine APPSTATS导致Java内存不足错误

孙宏壮
2023-03-14
问题内容

我的java appengine应用程序中有几个servlet,它们对内存进行排序并需要几秒钟的时间才能完成。这些完全没有错误。

但是,我最近为appengine启用了appstats并开始收到以下错误:

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 java.lang.StringBuilder.append(Unknown Source)
    at java.lang.StringBuilder.append(Unknown Source)
    at com.google.appengine.repackaged.com.google.protobuf.TextFormat$TextGenerator.write(TextFormat.java:344)
    at com.google.appengine.repackaged.com.google.protobuf.TextFormat$TextGenerator.print(TextFormat.java:332)
    at com.google.appengine.repackaged.com.google.protobuf.TextFormat.printUnknownFields(TextFormat.java:249)
    at com.google.appengine.repackaged.com.google.protobuf.TextFormat.print(TextFormat.java:47)
    at com.google.appengine.repackaged.com.google.protobuf.TextFormat.printToString(TextFormat.java:73)
    at com.google.appengine.tools.appstats.Recorder.makeSummary(Recorder.java:157)
    at com.google.appengine.tools.appstats.Recorder.makeSyncCall(Recorder.java:239)
    at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:98)
    at com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java:54)
    at com.google.appengine.api.datastore.PreparedQueryImpl.runQuery(PreparedQueryImpl.java:127)
    at com.google.appengine.api.datastore.PreparedQueryImpl.asQueryResultList(PreparedQueryImpl.java:81)
    at org.datanucleus.store.appengine.query.DatastoreQuery.fulfillEntityQuery(DatastoreQuery.java:379)
    at org.datanucleus.store.appengine.query.DatastoreQuery.executeQuery(DatastoreQuery.java:289)
    at org.datanucleus.store.appengine.query.DatastoreQuery.performExecute(DatastoreQuery.java:239)
    at org.datanucleus.store.appengine.query.JDOQLQuery.performExecute(JDOQLQuery.java:89)
    at org.datanucleus.store.query.Query.executeQuery(Query.java:1489)
    at org.datanucleus.store.query.Query.executeWithArray(Query.java:1371)
    at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:243)
    at com.poo.pooserver.dataaccess.DataAccessHelper.getPooStream(DataAccessHelper.java:204)
    at com.poo.pooserver.GetPooStreamServlet.doPost(GetPooStreamServlet.java:58)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.tools.appstats.AppstatsFilter.doFilter(AppstatsFilter.java:92)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)


问题答案:

我想知道这是否可以帮助您减少OutOfMemoryErrors的发生: 如何减少Google App Engine Java上Appstats的内存使用量

<filter>
  <filter-name>appstats</filter-name>
    <filter-class>com.google.appengine.tools.appstats.AppstatsFilter</filter-class>
    <init-param>
      <param-name>maxLinesOfStackTrace</param-name>
      <param-value>16</param-value>
    </init-param>
</filter>


 类似资料:
  • 问题内容: 我使用io.Copy()复制文件,大约700Mb,但这会导致内存不足 错误信息如下: 我为buf分配了足够的内存,这导致bodyWriter.CreateFormFile()中的内存不足 问题答案: 这是因为您正在“复制”到,这是内存中的缓冲区,从而迫使Go尝试分配与整个文件一样大的内存块。 根据您的使用情况,您似乎正在尝试通过HTTP流式传输文件?在这种情况下,请勿将传递给,而是直接

  • 我使用mockito 1.8.3、jacoco 0.72和maven 3.0.5 surefire插件(2.12.4)来执行单元测试并生成覆盖报告,它运行良好。 随着越来越多的测试被添加,它开始不工作。在测试执行过程中,我不断地遇到内存不足的错误,并且无法找到一种方法来找出问题所在。

  • 我正在研究一种需要对大矩阵进行数学运算的算法。基本上,该算法包括以下步骤: 输入:大小为n的两个向量u和v > 对于两个矩阵中的每个条目,应用一个函数f。返回两个矩阵M_u,M_v 求M_的本征值和本征向量。对于i=0,返回e_i,ev_i,。。。,n-1 计算每个特征向量的外积。返回一个矩阵O_i=e_i*转置(e_i),i=0,。。。,n-1 用e_i=e_i delta_i调整每个特征值,其

  • 问题内容: 我是Netbeans中这种错误的新手。我一直在使用Java Bean 8.0.2在Java J2SE中工作。我正在对字符串进行模糊搜索,通常字符串长度为300-500。我正在使用Levenshtein和Jaro Winkler算法来查找字符串之间的距离。大约有1500次迭代来查找字符串之间的距离!问题是我的Net Bean通常会为以下内容提供错误: 我已经在线进行了一些搜索来摆脱此错误

  • 上周,我们在生产环境中遇到了内存不足的错误。这种内存不足的错误可能每周发生一次,当前的解决方案是重新启动应用程序服务器。我们使用的是glassfish 3.0.1。生成的堆转储约为5GB。 请帮助分析下面的堆转储。下面是使用eclipse MAT生成的泄漏嫌疑人报告。我们如何分析下面的报告?

  • 问题内容: 编译Android项目时如何解决? 升级到Android Studio版本1后,我得到了这个。但是,我不认为这是问题所在。当我开始将应用程序升级到SDK 21之前(这是在SDK 20之前)的可能性最大。但是我也不是很确定。 我在Google周围搜索了一些 修复程序,但找不到可行的解决方案。大多数修复是针对Eclipse IDE的。 这是编译时遇到的完整logcat错误: 是因为我使用了