Tag: 内存不足的

如果使用带有大对象的枚举,Parallel.ForEach可能会导致“内存不足”exception

我试图迁移一个数据库,其中存储在数据库中的图像到数据库中的一条logging指向硬盘上的一个文件。 我正在尝试使用Parallel.ForEach来加快使用此方法查询数据的过程。 但是我注意到我正在得到一个OutOfMemoryexception。 我知道Parallel.ForEach将查询一批枚举types,以减less开销的代价,如果有一个用于间隔查询(所以如果你一次做了一堆查询,你的源代码更有可能将下一条loggingcaching在内存中把它们隔开)。 这个问题是由于我返回的logging是一个1-4Mb字节的数组,caching导致整个地址空间用完(程序必须以x86模式运行,因为目标平台将是32位机器) 有什么办法可以禁用caching或使TPL更小? 这里是一个示例程序来展示这个问题。 这必须在x86模式下进行编译,以显示问题,如果需要花费很长时间,或者在您的机器上没有发生问题,则会增加arrays的大小(我发现1 << 20在我的机器上需要大约30秒, 4 << 20几乎是瞬间的) class Program { static void Main(string[] args) { Parallel.ForEach(CreateData(), (data) => { data[0] = 1; }); } static IEnumerable<byte[]> CreateData() { while (true) { yield return new byte[1 << 20]; //1Mb array } } }

Maven内存不足造成失败

截至今天,我的编译失败。 [INFO] [ERROR] Unexpected [INFO] java.lang.OutOfMemoryError: Java heap space [INFO] at java.util.Arrays.copyOfRange(Arrays.java:2694) [INFO] at java.lang.String.<init>(String.java:203) [INFO] at java.lang.String.substring(String.java:1877) [错误]内存不足; 增加内存量,在启动时使用-Xmx标志(java -Xmx128M …) 截至昨天,我已经成功地运行了一个maven编译。 截至今天,我只是碰到了3 GB的堆。 另外,我只修改了2-3行代码,所以我不明白这个“内存不足”的错误。 vagrant@dev:/vagrant/workspace$ echo $MAVEN_OPTS -Xms1024m -Xmx3000m -Dmaven.surefire.debug=-Xmx3000m 编辑:我试图通过更改我的失败模块的pom.xml海报的评论。 但是我得到了相同的Maven构build错误。 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> <fork>true</fork> <meminitial>1024m</meminitial> <maxmem>2024m</maxmem> </configuration> </plugin>

Java 8构造函数参考的可怕的性能和大堆的足迹?

我只是在我们的生产环境中有一个相当不愉快的经历,导致OutOfMemoryErrors: heapspace.. 我追溯到我的使用函数中ArrayList::new的问题。 为了validation这实际上是通过一个声明的构造函数( t -> new ArrayList<>() )执行比正常创build更差,我写了下面的小方法: public class TestMain { public static void main(String[] args) { boolean newMethod = false; Map<Integer,List<Integer>> map = new HashMap<>(); int index = 0; while(true){ if (newMethod) { map.computeIfAbsent(index, ArrayList::new).add(index); } else { map.computeIfAbsent(index, i->new ArrayList<>()).add(index); } if (index++ % 100 == 0) { System.out.println("Reached index "+index); […]

Spark java.lang.OutOfMemoryError:Java堆空间

我的集群:1个主站,11个从站,每个节点有6GB的内存。 我的设置: spark.executor.memory=4g, Dspark.akka.frameSize=512 这是问题: 首先 ,我从HDFS读取一些数据(2.19 GB)到RDD: val imageBundleRDD = sc.newAPIHadoopFile(…) 其次 ,在RDD上做一些事情: val res = imageBundleRDD.map(data => { val desPoints = threeDReconstruction(data._2, bg) (data._1, desPoints) }) 最后输出到HDFS: res.saveAsNewAPIHadoopFile(…) 当我运行我的程序时,显示: ….. 14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task 1.0:24 as TID 33 on executor 9: Salve7.Hadoop (NODE_LOCAL) 14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Serialized task 1.0:24 as […]

错误java.lang.OutOfMemoryError:超出GC开销限制

我执行我的JUnittesting时遇到此错误消息: java.lang.OutOfMemoryError: GC overhead limit exceeded 我知道什么是OutOfMemoryError ,但GC开销限制是什么意思? 我该如何解决这个问题?

如何处理“java.lang.OutOfMemoryError:Java堆空间”错误(64MB堆大小)

我正在Java 5上编写客户端Swing应用程序(graphics字体devise器)。 最近,我正在运行java.lang.OutOfMemoryError: Java heap space错误,因为我不是保守的内存使用情况。 用户可以打开无限数量的文件,程序将打开的对象保存在内存中。 经过一个快速的研究,我发现5.0 Java虚拟机中的人机工程学和其他人在Windows机器上的JVM默认最大堆大小为64MB 。 鉴于这种情况,我该如何处理这个约束呢? 我可以使用java的命令行选项来增加最大堆大小 ,但是这需要找出可用的RAM并编写一些启动程序或脚本。 此外,增加一些有限的最大值不会最终摆脱这个问题。 我可以重写一些我的代码来经常保存对象到文件系统(使用数据库是一样的)来释放内存。 它可以工作,但也可能是很多工作。 如果你能指出我的细节以上的想法或像自动虚拟内存一样的select,dynamic扩展堆大小 ,这将是伟大的。