Tag: 内存不足的

java.lang.OutOfMemoryError:从URL下载大文件时的Java堆空间

我想从URL下载文件。 文件大小为564.31MB。 我不知道这里发生了什么错误。 此外,我想知道我的代码是否是从URL下载文件的正确方法。 如果有更好的方法,请详细告诉我为什么它比这更好。 谢谢。 import org.apache.commons.io.FilenameUtils; import java.io.*; import java.net.MalformedURLException; import java.net.URL; /** * Created by lukas on 6/30/16. */ public class Main { public static void main(String[] args){ try { String link = “https://s.basketbuild.com/uploads/devs/dianlujitao/oneplus3/cm13/cm-13.0-20160621-UNOFFICIAL-oneplus3.zip”; URL url = new URL(link); InputStream inputStream = new BufferedInputStream(url.openStream()); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int n=0; byte[] […]

很多内存中的OutOfMemoryexception

对不起的问题名称很抱歉,但我找不到更好的东西。 我有一些代码 long heapFreeSize = Runtime.getRuntime().freeMemory(); URL url = new URL(“http://example.com”); URLConnection myUrlConnection = url.openConnection(); GZIPInputStream gZIPInputStream = new GZIPInputStream(myUrlConnection.getInputStream()); StringBuffer decompressedStringBuffer = new StringBuffer(); int bytes_read; int bufferSize; heapFreeSize = Runtime.getRuntime().freeMemory(); while ((bytes_read = gZIPInputStream.read(buffer)) > 0) { String part = new String(buffer, 0 ,bytes_read, “UTF-8”); heapFreeSize = Runtime.getRuntime().freeMemory(); decompressedStringBuffer.append(part); bufferSize = decompressedStringBuffer.length(); heapFreeSize […]

如何解决Java错误“pool-1-thread-xxxx”java.lang.OutOfMemory

我已经搜索了关于这个问题的post,但我没有看到像我这样的情况。 我的java控制台显示错误消息”pool-1-thread-xxxx” java.lang.OutOfMemory如下图所示: 红线:CPU使用率 绿线:内存使用情况 我已将RAM从6G增加到10G ,并在启动程序之前在*.bat文件中设置-Xms=8G -Xmx=8G -Xmn=3G 。 我也一直在观看性能监视器,但内存总是在20%左右。 我不知道怎么会发生这种情况。 任何的想法? 这是我的run.bat代码。 @echo off javapro @java -Xoptimize -Xms8G -Xmx8G -Xmn3G -Xss1024k -XX:+UseConcMarkSweepGC -cp javaPro.exe; cls run.bat 操作系统:Windows Server 2012 R2 Java版本:jre1.8.0_171 RAM:10G CPU:2.5 GHz Intel Xeon(R)(超线程)

android loadIcon生成outOfMemoryError

我只有一个ListView包含所有已安装的应用程序及其图标 但如果安装的应用程序太多,我outOfMemoryErrors在执行时遇到outOfMemoryErrors Drawable app_icon = applicationInfoList.get(i).loadIcon(context.getPackageManager())); 每个ListEntry (这一行写在我的ListAdapter ) 到目前为止没问题,我明白为什么我遇到这个错误(加载的图标太多,vm堆太少) 但我在设置中查看了机器人管理应用ManageApplications活动的源代码 在使用ManageApps设置时,我从未遇到任何这些错误 但奇怪的是,他们完全采用相同的方式 你可以在这里看到他们的来源: ManageApplications活动 Drawable icon加载的位置 它在列表视图中设置的位置 但我真的不明白为什么我会得到一个oom而他们不?

为什么没有OutOfMemoryError子类?

众所周知, OutOfMEmoryError有多种原因(参见第一个答案 )。 为什么只有一个exception覆盖所有这些情况而不是从OutOfMEmoryErrorinheritance的多个细粒度OutOfMEmoryError ?

从大表中检索所有记录时如何避免OOM(Out of memory)错误?

我有一个任务是将一个巨大的表转换为自定义XML文件。 我将使用Java来完成这项工作。 如果我只是发出“SELECT * FROM customer”,它可能会返回最终导致OOM的大量数据。 我想知道,有没有办法可以在记录可用后立即处理,并在sql检索过程中从内存中删除记录? —于2009年7月13日编辑 让我详细说明我的问题。 我有1个db服务器和1个应用服务器。 当我在应用程序中发出选择查询时,数据将从数据库服务器传输到应用服务器。 我相信(如果我错了,请纠正我)ResultSet需要等到接收到查询中的所有记录。 即使我们将获取大小设置为4,对于1000记录表,我们仍然最终在app服务器的堆内存中有1000条记录,这是正确的吗? 获取大小仅影响从/向数据库服务器的往返次数。 我的问题是,如何在它到达app服务器后立即开始处理该4个(或任何数字)记录,并将其丢弃以释放应用服务器中的内存?

Java OutOfMemoryError在读取大文本文件时

我是Java新手,正在阅读非常大的文件,需要一些帮助来理解问题并解决它。 我们有一些遗留代码必须进行优化才能使其正常运行。文件大小只能从10mb到10gb不等。 只有文件启动超过800mb大小时才会启动麻烦。 InputStream inFileReader = channelSFtp.get(path); // file reading from ssh. byte[] localbuffer = new byte[2048]; ByteArrayOutputStream bArrStream = new ByteArrayOutputStream(); int i = 0; while (-1 != (i = inFileReader.read(buffer))) { bArrStream.write(localbuffer, 0, i); } byte[] data = bArrStream.toByteArray(); inFileReader.close(); bos.close(); 我们收到了错误 java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2271) at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113) at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) at […]