Tag: out of memory

如何用eclipse分析MAT

我的Web应用程序在apache tomcat中运行。 类加载器/组件org.apache.catalina.loader.WebappClassLoader @ 0x7a199fae8占用1,70,86,32,104(88.08%)个字节。 内存在加载的java.util.concurrent.ConcurrentHashMap$Segment[]一个实例中累积。 我在分析Heapdump时遇到了这个问题。 如何进一步分析?

使用SOAPHandler时MTOM无法正常工作

我尝试使用Mtom传输文件,它工作得很好,直到我使用SoapHandler来validation客户端签名。 SoapHandler保留所有消息并将其更改为base64编码。 因此,当我尝试获取大文件时,Jvm会抛出堆大小exception。 你们知道解决这个问题的方法吗?

发生了OutOfMemoryError:Play框架中的Java堆空间

我正在用java创建基于游戏的Web应用程序。 当我运行它时出现错误,出现以下错误: Execution exception (In /app/controllers/Application.java around line 12) OutOfMemoryError occured : Java heap space play.exceptions.JavaExecutionException: Java heap space at play.mvc.ActionInvoker.invoke(ActionInvoker.java:227) at Invocation.HTTP Request(Play!) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3209) at java.lang.String.(String.java:215) at java.lang.StringBuffer.toString(StringBuffer.java:585) at java.io.StringWriter.toString(StringWriter.java:193) at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:248) at play.templates.Template.render(Template.java:26) at play.mvc.results.RenderTemplate.(RenderTemplate.java:24) at play.mvc.Controller.renderTemplate(Controller.java:657) at play.mvc.Controller.renderTemplate(Controller.java:637) at play.mvc.Controller.render(Controller.java:692) at controllers.Application.index(Application.java:12) at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:540) at […]

java.lang.OutOfMemoryError:加载xlsx文件时超出了GC开销限制

我理解错误意味着什么,我的程序消耗了太多的内存,并且很长一段时间它没有恢复。 当发生内存问题时,我的程序只读取6,2Mb xlsx文件。 当我尝试监视程序时,内存消耗很快达到1,2Gb,然后崩溃。 读取6,2Mb文件时如何达到1,2Gb? 有没有办法以块的forms打开文件? 这样它就不必加载到内存中了? 或任何其他解决方案? 正是这部分导致了它。 但既然它是一个图书馆,难道不应该以某种方式处理它吗? 它只有20万行,只有3列。 对于未来,我需要它与约。 1百万条记录和更多列… 码: Workbook myWorkBook; Sheet mySheet; if (filePath.contains(“.xlsx”)) { // Finds the workbook instance for XLSX file myWorkBook = new XSSFWorkbook(fis); // Return first sheet from the XLSX workbook mySheet = myWorkBook.getSheetAt(0); myWorkBook.close(); // Should I close myWorkBook before I get data from […]

使用GSON JsonReader处理大字段的最佳方法

我得到了一个java.lang.OutOfMemoryError:Java堆空间,即使使用GSON Streaming也是如此。 {“result”:”OK”,”base64″:”JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC….”} base64最长可达200​​Mb。 GSON占用的内存要多得多,(3GB)当我尝试将base64存储在一个变量中时,我得到一个: Exception in thread “main” java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2367) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:535) at java.lang.StringBuilder.append(StringBuilder.java:204) at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1014) at com.google.gson.stream.JsonReader.nextString(JsonReader.java:815) 处理这种领域的最佳方法是什么?

我的代码中的内存不足exception

我正在运行代码长时间作为Oracle数据库压力测试的一部分并使用java版本“1.4.2”。 简而言之,我所做的是: while(true) { Allocating some memory as a blob byte[] data = new byte[1000]; stmt = fConnection.prepareStatement(query); // [compiling an insert query which uses the above blob] stmt.execute(); // I insert this blob-row in the database. stmt.close(); } 现在我想运行这个测试8-10小时。 然而,显然在插入大约1500万条记录后,我点击了java.lang.OutOfMemoryError 我用-Xms512m -Xmx2g运行它。 我尝试使用更高的值,但我似乎没有那么多的硬件,我认为它不是req: java -Xms512m -Xmx4g -jar XX.jar Invalid maximum heap size: -Xmx4g The […]

JVisualVM内存采样:不支持远程应用程序

我正在尝试使用Red Hat Linux中的JVisualVM监视远程tomcat进程。 CPU采样工作正常但内存采样选项卡已禁用。 它说“内存采样:不可用。不支持远程应用程序” 。 进程的命令行参数: -Djavac.source=1.5 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=11107 JVisualVm详细信息: Version: 1.6.0_24 (Build 100930); platform 100909-1140d3a55456 System: Linux (2.6.18-53.1.14.el5) , i386 32bit Java: 1.6.0_24; Java HotSpot(TM) Client VM (19.1-b02, mixed mode) 有什么我想念的东西。 我对这一切都很陌生。

编写Big JSON文件以避免OutOfMemory问题的最佳方法

首先,请注意今天是我与GSON第一天。 我正在尝试使用GSON库编写Json文件。 我在ArrayList有成千上万的JsonObjects 。 写入Json文件时,它看起来应该与此类似。 [ { “hash_index”: “00102x05h06l0aj0dw”, “body”: “Who’s signing up for Obamacare?”, “_type”: “ArticleItem”, “title”: “Who’s signing up for Obamacare? – Jan. 13, 2014”, “source”: “money.cnn.com”, “primary_key”: 0, “last_crawl_date”: “2014-01-14”, “url”: “http://money.cnn.com/2014/01/13/news/economy/obamacare-enrollment/index.html” }, { “hash_index”: “00102x05h06l0aj0dw0iz0kn0l@0t#0”, “body”: “Who’s signing up for Obamacare?”, “_type”: “ArticleItem”, “title”: “Who’s signing up for Obamacare? – Jan. […]

对象未完成,Finalizer线程没有做任何事情

在我们的服务器上,我们开始遇到OutOfMemoryError问题。 我们使用Eclipse Memory Analysis分析了堆转储,并发现许多对象被认为是最终确定的(大约是堆的2/3): 我们发现,它可能是一些finalize()方法阻塞。 我发现了这个问题的几个错误报告( 这里或这里 ),它总是在Finalizer线程堆栈中表现出来,它在某个地方被阻止了。 但在我们的例子中,这个post是等待的: “Finalizer” daemon prio=10 tid=0x43e1e000 nid=0x3ff in Object.wait() [0x43dfe000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) – waiting on (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) – locked (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189) 编辑: 然后我们尝试添加-XX:+UseConcMarkSweepGC ,但没有成功,只有OutOfMemoryError的频率减少了,所以我们首先想到它有所帮助。 最后,我们怀疑JVM错误并从OpenJDK 1.6.0_30升级到Oracle JDK 1.7.0_51,问题消失了(至少看起来如此,在过去4小时内使用的堆没有增长)。 我们不记得finalize方法有任何变化,我们也没有升级任何库,在那段时间里只有很小的发展。 问题不会在我们的测试服务器上重现,具有相同的配置,除了它是64位JVM而生产服务器是32位。 问题是:对象未完成的原因是什么, Finalizer线程等待下一个对象? 我们是否正确分析了堆转储? 谢谢你的所有答案。

R中的MemoryError,而read.xlsx

我使用以下R代码(利用Java参数来增加内存): library(xlsx) options(java.parameters = “-Xmx1g”) library(XLConnect) NiVe <- read.xlsx("version1.xlsx",1) version1.xlsx文件大小为13 MB。 我收到以下错误: Error in .jcall(“RJavaTools”, “Ljava/lang/Object;”, “invokeMethod”, cl, : java.lang.OutOfMemoryError: Java heap space 有人可以帮忙吗?