Tag: out of memory

运行Hadoop时如何避免OutOfMemoryException?

我正在通过大量模式匹配来运行超过1.5 TB数据的Hadoop作业。 我有几台机器每个都有16GB RAM,而且我总是在这个工作上得到OutOfMemoryException这个数据(我正在使用Hive)。 我想知道如何在文件hadoop-env.sh最佳地设置选项HADOOP_HEAPSIZE ,所以,我的工作不会失败。 是否可以设置此选项,以便我的工作不会失败? 当我将HADOOP_HEAPSIZE设置为1.5 GB并从查询中删除一半模式匹配时,作业成功运行。 那么这个选项是什么,如果它无助于避免失败? 我打算做更多的优化设置试验,但由于这些工作需要10个小时才能运行,我会征求您的意见。

限制Java进程的总内存消耗(在Cloud Foundry中)

与这两个问题相关: 如何设置JVM的最大内存使用量? 什么会导致java进程大大超过Xmx或Xss限制? 我在Cloud Foundry上运行Java应用程序,需要确保不超过分配的内存。 否则,这是当前的问题,该进程被Cloud Foundry监视机制(Linux CGROUP)杀死。 Java Buildpack自动为-Xmx和-Xss设置合理的值。 通过调整参数并配置(最大)预期线程数,我非常确定Java进程消耗的内存应该小于我分配给Cloud Foundry应用程序的上限。 但是,我仍然遇到Cloud Foundry“内存不足”错误( 不是 Java OOM错误!): index: 3, reason: CRASHED, exit_description: out of memory, exit_status: 255 我试验了MALLOC_ARENA_MAX设置。 将值设置为1或2会导致启动缓慢。 在MALLOC_ARENA_MAX=4我仍然看到如上所述的错误,因此这不是我的问题的解决方案。 目前我使用非常紧凑的内存设置进行测试,以便更容易重现问题。 但是,即使这样,我也要等待大约20-25分钟才能发生错误。 我必须指定哪些参数和/或环境变量,以确保我的Java进程永远不会超过某个内存限制? 如果应用程序实际需要更多内存,则可以使用Java OOM错误。 有关MALLOC_ARENA_MAX更多信息: https://github.com/cloudfoundry/java-buildpack/pull/160 https://www.infobright.com/index.php/malloc_arena_max/#.VmgdprgrJaQ https://www.ibm.com/developerworks/community/blogs/kevgrig/entry/linux_glibc_2_10_rhel_6_malloc_may_show_excessive_virtual_memory_usage?lang=en 编辑:可能的解释是: http : //www.evanjones.ca/java-bytebuffer-leak.html 。 正如我目前在执行大量传出的HTTP / REST请求时看到的OOM问题,这些缓冲区可能是罪魁祸首。

将100多个字符串转换为字节数组时的java.lang.OutOfMemoryError

首先,我理解有关java.lang.OutOfMemoryError和Bitmaps的问题,之前已经多次询问过。 我还检查了有效显示位图页面。 我的用例: 我在SQLite数据库中存储两个不同大小的位图作为字符串。 位图的第一个尺寸是屏幕宽度的50%,第二个尺寸是屏幕宽度的100%。 我正在使用RecyclerView,它在ImageViews中显示图像,这些图像是屏幕宽度的50%或100%,因此加载的位图并不比它们需要的大,并且在从图像中检索图像之前它们的大小合适。数据库。 我也使用AsyncTask加载位图。 我在RecyclerView中有超过180个不同的项目,因此我创建了总共超过360个位图(即numberOfimages * theDifferentSizesOfEachImage)。 我通过以下代码将图像的String版本转换为字节数组: byte [] byteArray = Base64.decode(encodedString, Base64.DEFAULT); 问题 除非我重新启动相同的Activity(例如加载Activity,然后通过在导航抽屉中再次单击它重新创建Activity,然后重复该过程),Activity可以加载大约170个不同的图像而不会发生java.lang.OutOfMemoryError 。 )并在将字符串转换为字节数组时引发了java.lang.OutOfMemoryError 。 我使用以下代码使用Glide库将字节数组转换为Bitmap: Bitmap bitmap = Glide.with(context).load(byteArray).asBitmap() .dontTransform().dontAnimate().skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE).into(-1, -1).get(); 我的问题简而言之 在将字符串转换为字节数组时,如何避免发生java.lang.OutOfMemoryError ? 注意 使用Glide创建一个Bitmap后,我在给定的Bitmap上调用recycle(),然后将其设置为null 。 我也已在我的Android Manifest中使用android:largeHeap=”true” 提前致谢 编辑 以下是我创建Bitmap字符串的方法: ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.WEBP,100, baos); byte [] b =baos.toByteArray(); String bitmapString = […]

巨大的堆转储(11GB) – Jhat失败和Eclipse MAT需要帮助

我们的EA中出现内存错误,我们使用-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir在OOM时转储堆。 我们有一个12GB的堆内存和256MB的perm gen。 堆转储是在我们运行我们的应用程序的Linux框中生成的,其大小为11.5GB。 我们没有权限将其下载到我们的本地。 当我们尝试使用JHAT分析11GB堆转储时,它会抛出一个OOM。 我们从Linux CLI尝试了以下命令。 jhat java_pid1491.hprof jhat -J-Xmx16g -XX:-UseBiasedLocking java_pid1491.hprof jhat -J-d64 -J-Xmx16g -J-XX:-UseBiasedLocking java_pid1491.hprof#1 对于所有选项,它在读取转储几分钟(> 30分钟)后抛出一个OOMexception。 我们用谷歌搜索它并发现MAT作为一个强大的堆转储分析器,但不是在LINUX中使用它的方法。 任何建议都会有更大的帮助。 谢谢。 改性: 在Linux x86_64机器上安装了MAT,但在执行时出现了以下错误./MemoryAnalyzer (.:17319): GLib-GObject-WARNING **: invalid (NULL) pointer instance (.:17319): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)’ failed (.:17319): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)’ failed (.:17319): GLib-GObject-CRITICAL **: g_object_get: […]

使用ImageIO.read(文件)读取图像; 导致java.lang.OutOfMemoryError:Java堆空间

我正在使用ImageIO API来编写PNG文件。 此代码在循环中调用并导致OutOfMemory错误。 无论如何可以修复以下代码以避免OutOfMemory错误? 或者是增加JVM堆大小的唯一选择? File file = new File(resultMap.get(“outputFile”).toString()); //ImageIO to convert jpg to png BufferedImage img = ImageIO.read(file); file = new File(resultMap.get(“outputFile”).toString() + “.png”); ImageIO.write(img, “png”, file); Java堆大小为1024M。

Eclipse + GWT – >在开发模式下内存不足

如果我在开发模式下在eclipse中运行我的GWT应用程序并在浏览器中点击一段时间,我总是会在eclipse中出现“内存不足”错误。 我的电脑有16 GB Ram,从未使用超过8GB。 我尝试了几个配置参数。 我的运行配置中的VM参数包含以下参数:“ – Xms8192m -Xmx8192m” 即使在eclipse.ini中我测试了几个配置参数,现在它看起来像这样: –launcher.XXMaxPermSize 8192M -showsplash org.eclipse.platform –launcher.XXMaxPermSize 8192m –launcher.defaultAction openFile –launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.6 -Xms8192m -Xmx8192m 但我仍然得到错误。 有什么办法可以防止这种情况吗?

使用Apache POI进行低内存写入/读取

我正在尝试编写一个非常大的XLSX文件(4M +单元),而且我遇到了一些内存问题。 我不能使用SXSSF,因为我还需要读取模板中的现有单元格。 有什么办法可以减少内存占用吗? 也许结合流媒体阅读和流媒体写作?

apache poi excel大自动列宽

我尝试使用Apache poi最新创建一个包含30列和100万条记录的大型excel 2010。 我正在创建此链接中的描述http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java 。 但我希望列宽与列标题文本大小相同。 但是在使用以下代码创建excel之后我正在执行此操作 for (int x = 0; x < sheet.getRow(0).getPhysicalNumberOfCells(); x++) { sheet.setColumnWidth(x, 20*256); } 它占用了大量的时间,即使有5GB的堆大小,我也会失去记忆。 谢谢 内存

为什么堆空间仅在运行JUnit测试时耗尽?

运行JUnit测试时,我似乎总是遇到这个错误: eclipse outOfMemoryError:堆空间 我用JConsole监视Eclipse,堆内存峰值大约为150MB。 我已将堆内存设置为1GB。 我在启动Eclipse时使用以下参数: -vm“C:\ Program Files \ Java \ jre1.5.0_08 \ bin \ javaw.exe”-vmargs -Xmx1024M -XX:MaxPermSize = 128M -Dcom.sun.management.jmxremote.port = 8999 -Dcom.sun.management .jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = false 有谁知道可能导致这个问题的原因? 它只在运行JUnit测试时发生。

为什么Apache Spark在客户端上执行filter

作为新手上的apache引发了一些关于在Spark上获取Cassandra数据的问题。 List dates = Arrays.asList(“2015-01-21″,”2015-01-22”); CassandraJavaRDD aRDD = CassandraJavaUtil.javaFunctions(sc). cassandraTable(“testing”, “cf_text”,CassandraJavaUtil.mapRowTo(A.class, colMap)). where(“Id=? and date IN ?”,”Open”,dates); 此查询不过滤cassandra服务器上的数据。 虽然这个java语句正在执行它的内存并最终抛出spark java.lang.OutOfMemoryErrorexception。 查询应该过滤掉cassandra服务器而不是客户端上的数据,如https://github.com/datastax/spark-cassandra-connector/blob/master/doc/3_selection.md所述 。 虽然我正在使用cassandra cqlsh上的filter执行查询,但它执行正常但执行查询而没有filter(where子句)正在给出预期的超时。 因此很明显,火花并没有在客户端应用filter。 SparkConf conf = new SparkConf(); conf.setAppName(“Test”); conf.setMaster(“local[8]”); conf.set(“spark.cassandra.connection.host”, “192.168.1.15”) 为什么在客户端应用filter以及如何改进它以在服务器端应用filter。 我们如何在Windows平台上的cassandra集群上配置spark集群?