Tag: out of memory

PermGen Out of Memory原因

我经常在PermGen中检测我的环境中的OOM: java 6 的jboss-4.2.3 不是一个大的网络应用程序 我知道String.intern()问题 – 但我没有足够的宝贵用法。 MaxPermGen尺寸的增加不会产生任何影响(从128 Mb到256 Mb)。 还有什么其他原因可以为PermGen调用OOM? 在这种情况下(战略,工具等),最佳调查方案是什么? 谢谢你的帮助

如何读取大小> 40MB的XLSX文件

我正在使用apache-POI XSSF来读取XLSX文件。 我收到错误java.lang.OutOfMemoryError: Java heap space 。 后来,使用-Xmx1024m为java类增加堆大小仍然重复相同的错误。 码: String filename = “D:\\filename.xlsx”; FileInputStream fis = null; try { fis = new FileInputStream(filename); XSSFWorkbook workbook = new XSSFWorkbook(fis); 在上面的代码段中,执行在XSSFWorkbook处XSSFWorkbook并抛出指定的错误。 有人可以建议更好的方法来读取大型XLSX文件。

在OutOfMemoryError的情况下Java进程的行为

获取OutOfMemoryError的Java程序的行为是什么。 有没有明确的行为? 流程会崩溃还是会进入等待/睡眠状态? 更新:如果我没有在我的代码中处理它?

无法写入超出特定大小的DataOutputStream – OutOfMemoryError

我有以下代码生成OutOfMemoryexception: byte[] buf = new byte[10240]; int len = 0; DataOutputStream dataOS = new DataOutputStream(conn.getOutputStream()); while ((len = _inputStream.read(buf)) > 0) { System.out.println(“len : ” + len); System.out.println(“Going to write buf into dataOS : ” + buf.length); dataOS.write(buf, 0, len); System.out.println(“dataOS.size() : ” + dataOS.size()); } _inputStream.close(); 以下是调试输出的最后几行: len : 10240 Going to write buf […]

如何模拟内存不足:请求的arrays大小超过VM限制

我使用了太阳网站的Out Of Memory帮助 。 引用的地方 内存不足:请求的arrays大小超过VM限制 这表示应用程序尝试分配大于堆大小的数组。 例如,如果应用程序尝试分配512MB的数组但最大堆大小为256MB,则将抛出此错误。 在大多数情况下,问题可能是堆大小太小或者错误导致应用程序尝试创建一个大小计算错误的数组。 我试图模仿这个 import java.util.ArrayList; import java.util.List; public class JavaTest { public static void main(String[] args){ long[] ll = new long[64*1024*1024]; } } 在我的机器上 javac *.java;java -Xmx256m JavaTest 但上面的线正在产生 线程“main”中的exceptionjava.lang.OutOfMemoryError:Java堆空间 在JavaTest.main(JavaTest.java:7) 我错过了什么? 更新:我的java版本是 $ java -version java版“1.6.0_15” Java(TM)SE运行时环境(版本1.6.0_15-b03) Java HotSpot(TM)服务器VM(内置14.1-b02,混合模式)

创建<100个线程时的Java`OutOfMemoryError`

由于这个错误,我一直在阅读和测试并在墙上撞了一天超过一天。 我在一个名为Listener的类中有一些Java代码,看起来像这样 ExecutorService executor = Executors.newFixedThreadPool(NTHREADS); boolean listening = true; int count = 0; while (listening) { Runnable worker; try { worker = new ServerThread(serverSocket.accept()); // this is line 254 executor.execute(worker); count++; logger.info(“{} threads started”, count); } catch (Exception e1){ //… } } 我一直在调整JVM设置-Xmx (1到15G之间)和-Xss (从104k到512M之间)。 服务器有24 GB的RAM,但还必须运行支持该程序的数据库。 创建2-20个线程后(程序中的其他地方也存在几十个),我收到错误 Exception in thread “Thread-0” java.lang.OutOfMemoryError: unable […]

PySpark:java.lang.OutofMemoryError:Java堆空间

我最近在我的服务器上使用PySpark与Ipython一起使用24个CPU和32GB RAM。 它只能在一台机器上运行。 在我的过程中,我想收集大量数据,如下面的代码所示: train_dataRDD = (train.map(lambda x:getTagsAndText(x)) .filter(lambda x:x[-1]!=[]) .flatMap(lambda (x,text,tags): [(tag,(x,text)) for tag in tags]) .groupByKey() .mapValues(list)) 当我做 training_data = train_dataRDD.collectAsMap() 它给了我outOfMemory错误。 Java heap Space 。 此外,我在此错误后无法对Spark执行任何操作,因为它失去了与Java的连接。 它给出了Py4JNetworkError: Cannot connect to the java server 。 看起来堆空间很小。 如何将其设置为更大的限制? 编辑 : 我在运行之前尝试过的事情: sc._conf.set(‘spark.executor.memory’,’32g’).set(‘spark.driver.memory’,’32g’).set(‘spark.driver.maxResultsSize’,’0′) 我按照此处的文档更改了spark选项(如果你执行ctrl-f并搜索spark.executor.extraJavaOptions): http ://spark.apache.org/docs/1.2.1/configuration.html 它说我可以通过设置spark.executor.memory选项来避免OOM。 我做了同样的事情,但似乎没有工作。

Java在序列化期间没有堆空间

以下代码导致OutOfMemmoryError:大约300万行的堆空间。 分配给JVM的内存为4 GB,使用64位安装。 while (rs.next()) { ArrayList arrayList = new ArrayList(); for (int i = 1; i <= columnCount; i++) { arrayList.add(rs.getString(i)); } objOS.writeObject(arrayList); } ArrayList引用的内存在while循环的每次迭代中都有资格进行垃圾收集,而内部JVM在抛出OutOfMemory错误之前会调用垃圾收集( System.gc() ),因为堆空间。 那么为什么会发生exception呢?

为什么没有捕获“java.lang.OutOfMemoryError:Java堆空间”?

我在Java Web应用程序中有一个线程导致java.lang.OutOfMemoryError:Java堆空间exception,但try / catch块没有捕获错误。 示例代码: private void doSomeWork() { try { processData(); //Causes OutOfMemoryError System.out.println(“This line does not execute”); } catch (Exception e) { System.out.println(“Exception. This line does not execute.”); //Log error } finally { System.out.println(“finally. This line does execute”); System.out.println(“Thread name: ” + Thread.currentThread().getName()); } } 输出: 最后。 这一行确实执行 线程名称:_Worker-8 线程“_Worker-8”中的exceptionjava.lang.OutOfMemoryError:Java堆空间 … 背景: 我最近接手了这个Java项目,我正在努力加快Java和这个项目的速度。 […]

如何调试Java OutOfMemoryexception?

调试java.lang.OutOfMemoryErrorexception的最佳方法是什么? 当我们的应用程序发生这种情况时,我们的应用服务器(Weblogic)会生成堆转储文件。 我们应该使用堆转储文件吗? 我们应该生成Java线程转储吗? 究竟有什么区别? 更新:生成线程转储的最佳方法是什么? kill -3 (我们的应用程序在Solaris上运行)是杀死应用程序并生成线程转储的最佳方法吗? 有没有办法生成线程转储但不杀死应用程序?