java大文件下载内存溢出解决办法

2023-11-08

第一种解决办法内存够用的情况 启动时设置-Xmx的值大一点 比如2G。

第二种办法代码中使用缓冲流的方式,如果是本地文件就更好,如果是还需要再去文件服务器中下载一次也行。

例子:

private void download(String downloadUrl, String path){
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            URL url = new URL(downloadUrl);
            //这里没有使用 封装后的ResponseEntity 就是也是因为这里不适合一次性的拿到结果,放不下content,会造成内存溢出

            HttpURLConnection connection =(HttpURLConnection) url.openConnection();
            //使用bufferedInputStream 缓存流的方式来获取下载文件,不然大文件会出现内存溢出的情况
            inputStream = new BufferedInputStream(connection.getInputStream());
            File file = new File(path);
            File fileParent = file.getParentFile();
            if (!fileParent.exists()) {
                fileParent.mkdirs();
            }
            outputStream = new FileOutputStream(file);
            //这里也很关键每次读取的大小为5M 不一次性读取完
            byte[] buffer = new byte[1024 * 1024 * 5];// 5MB
            int len = 0;
            while ((len = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, len);
            }
            connection.disconnect();
        }catch (Exception e){

        }finally {
            IOUtils.closeQuietly(outputStream);
            IOUtils.closeQuietly(inputStream);
        }

    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java大文件下载内存溢出解决办法 的相关文章

  • 配置 OPC UA 服务器 (Milo)?

    我刚刚查看了 Eclipse Milo 项目 https projects eclipse org proposals milo https projects eclipse org proposals milo 这对于 开放 OPC UA
  • XSD 验证错误:在 web.xml 中找不到 TagLib 标记

    我详细显示错误如下 cvc complex type 2 4 a 发现以元素开头的无效内容 taglib One of http java sun com xml ns javaee 描述 http java sun com xml ns
  • 从 J2SE 5.0 学习 Java SE 6 有多难?

    我是新来的 我有一个简单的问题 希望有人能帮助我 我即将开始学习Java 正在寻找一本好的教材来使用 我发现 Y Daniel Liang 的 Java 编程入门 评价很高 但我想知道是否可以使用旧的第 6 版 2006 年 7 月 22
  • 无法从 java 发送 48681 字节消息以保护 wcf 服务

    我必须使用相互身份验证从 java 调用安全的 WCF 服务 一切工作正常 除了我无法发送大小超过 48680 字节的消息 因此 48680 字节的消息已成功发送 但 48681 字节的消息未成功发送 并且 java 应用程序因读取超时异常
  • 将嵌套的 ArrayList 转换为 Java List

    我有这个方法 public List
  • 如何为Spring Boot中的所有控制器指定前缀?

    我有控制器映射到 user and order RestController RequestMapping users public class UserController RestController RequestMapping or
  • 确定列表编号是否连续

    我在 Java 工作 我有一个无序列表 包含 5 个数字 范围从 0 100 没有重复 我想检测其中 3 个数字是否连续且没有间隙 例子 9 12 13 11 10 true 17 1 2 3 5 true 19 22 23 27 55 f
  • java.io.IOException: EnsureRemaining: 仅剩余 0 个字节,尝试读取 1

    我在 giraph 中的自定义类方面遇到一些问题 我制作了 VertexInput 和 Output 格式 但总是收到以下错误 java io IOException ensureRemaining Only bytes remaining
  • Java Sound可以用来控制系统音量吗?

    Java 声音优惠FloatControl各种声音线路功能的实例 以及MASTER GAIN http docs oracle com javase 7 docs api javax sound sampled FloatControl T
  • 公共领域有哪些替代方案?

    我正在用 java 编写一个游戏 正如问题标题建议的那样 我在类中使用公共字段 暂且 据我所知 公共领域很糟糕 我有一些理解其中的原因 但如果有人能澄清为什么你不应该使用它们 那将不胜感激 问题是 从我所看到的来看 这似乎是合乎逻辑的 是使
  • HYBRIS - 组件和插槽如何在 JSP 文件中工作?

    最近我正在使用 Hybris 我无法理解这些组件是如何工作的 我知道如何创建和定义一个 如何将它们添加到我想要的页面等 但我不明白如何使用该标签
  • Jackson 中没有注释的多态反序列化

    我有一个CloudEvent
  • Spring 非托管 bean 的依赖注入

    我有一个非托管的 JPA 域类 它是通过实例化的new操作员 UserAccount account new UserAccount userRepository save account In my UserAccount类 我有一个be
  • 如何在 Struts 2 中访问 OGNL 跟踪评估?

    有人告诉我要优化网络应用程序 为此 我使用JProfiler https www ej technologies com products jprofiler overview html 我注意到很大一部分响应时间都花在了表示层上 特别是当
  • JList 类型不采用参数类型

    当我尝试编译一些代码时 我不断收到这些错误 CCC java 21 type javax swing JList does not take parameters JList
  • 在大画布上滚动

    我需要一些帮助来了解滚动绘制到 Android 画布上的项目的基础知识 假设我想创建一个时间线 其中 0 处的时间是可视化的顶部 并且随着时间的增加 时间线继续呈现在上一个点下方 如果我想在 Android 上渲染它 我知道我可以通过重写
  • 未找到 GroovyEvaluator

    我会尝试在以下位置制作我的 PIE 3D 报告iReport 在我的 struts xml 中 我用这个来调用我的报告
  • Web 服务返回 java.lang.reflect.InitationTargetException

    我在向 java web 服务发出请求时收到上述消息 我们最初创建了一个 Java 控制台应用程序并手动提交了一个 xml 文件 当将其作为 Java 应用程序运行时 将使用 System out println 成功创建并显示响应 我们通
  • 如何在Java中添加两个“卡”的值?

    我正在开发一个项目来模拟二十一点游戏中的第一笔交易 到目前为止 程序创建了两张随机等级 ACE 到 KING 和随机花色的牌 我正在努力创建一个切换表或 if else 梯形图 将两张卡的附加值分配为可变分数 下面的代码从概念上代表了我想要
  • 只有创建视图层次结构的原始线程才能触摸其视图。在安卓上[重复]

    这个问题在这里已经有答案了 我只是一个初学者 所以请原谅我问一个可能愚蠢的问题 我不明白只有创建视图层次结构的原始线程才能触摸其视图的含义 请有人告诉我为什么会发生此错误以及如何解决此问题 ThankYou 这是我的班级 public cl

随机推荐

  • 微信小程序 - 暗黑模式(深色模式)

    最近暗黑模式成为了潮流 微信小程序也推出了暗黑模式适配 下面来记录一个下适配暗黑模式 效果图 一 实现 1 开启暗黑模式 在 app json 中配置 darkmode true app json darkmode true 2 配置主题文
  • Linux 下 C语言编写 TCP/IP文件传输

    一 概述 文件传输 分为文件名字和文件内容 传递文件名后 等待另外一端创建相应的文件并回复 然后在开始传输文件内容 以下程序还设计到目录的查询 二 目录的查询 主要头文件 include
  • Android Studio 安装 (MAC)

    一 下载地址 Download Android Studio App Tools Android Developers 二 安装配置 1 Do not import settings 2 Cancel gt Next 3 Standard
  • 极限验证,滑动验证-java实现

    先给大家看个图 图中共色框内的验证码 大家应该见过 今天咱们就实现这个插件 其实这个插件是第三方服务的 极限验证码 官网 http www geetest com 官网有文档还有教程 大家可以自己看 我也是运行官方的源码 1 在官网 htt
  • JS中断循环

    js中断循环 中断循环 for var i 1 i lt 200 i if i 7 0 break 中断循环 document write i t 中断一次循环 继续下面的循环 for var i 1 i lt 100 i if i 3 0
  • 计算机投影仪显示无信号如何解决,投影仪无信号输入的解决办法是什么?

    Lin 4987 2015 11 05 13 27 笔记本电脑连接投影仪无信号 1 检查投影机与电脑连接使用的是VGA线还是HDMI线 2 如果是VGA连接 请检查投影机是否选择到VGA或者电脑模式 如果是HDMI连接的话 请检查投影机是否
  • ECCV 2016《SSD: Single Shot MultiBox Detector》论文笔记

    本学弱喜欢在本子上记笔记 但字迹又丑 望看不懂我的字的大佬不要喷我 看得懂的大佬批评指正
  • HCIA Datacom_DHCP基础与原理、常见的网络服务与应用、PPPoE原理与配置

    DHCP基础与原理 一 应用场景 DHCP服务器能够为大量主机分配IP地址 并能够集中管理 DHCP用来自动分配IP地址 在DHCP中有两个角色 DHCP客户端 DHCP服务器 DHCP是一种类型的C S架构 二 报文类型 1 DHCP D
  • android 使用BitmapShader实现圆形以及放大镜效果

    在一些显示用户头像的时候 大多数都是显示圆形的 而不是显示一个正方形或者长方形 这样显得很呆板 视觉效果也不好看 今天就用二种方式实现图片圆形显示的效果 在先讲这个效果实现之前 讲下BitmapShader到底能干嘛 android有几个关
  • 多尺度无序池化卷积神经网络——MOP-CNN(MultiScale Orderless Pooling)

    本文讲解的是Yunchao Gong发表在2014年的ECCV会议上的 Multi Scale Orderless Pooling of Deep Convolutional Activation Features 中文译名是深度卷积激活特
  • EasyAR平面图形跟踪和识别图上显示视频

    功能简介 Planar Image Tracking是用于检测与跟踪日常生活中有纹理的平面物体 所谓 平面 的物体 可以是一本书 一张名片 一幅海报 甚或是一面涂鸦墙这类具有平坦表面的物品或事物 这些物体应当具有丰富且不重复的纹理 为了创建
  • Android-自定义UI模板

    我们要用UI模板的时候 如果所有的Topbar内容都是没有变的话 那我们用在xml文件中include进去就好了 但是如果Topbar中的内容是会随着fragment或者activity改变的话 拿我们总不能每次都去写多个文件 再分别inc
  • QT学习-界面中实时绘制函数图像

    通过重写QT中QWidget类中的paintEvent函数 我们就可以做到在widget中进行函数图像的绘制 我使用的是QCreator的UI设计器 首先我们需要从QWidget继承一个子类 并重写他的paintEvent class sh
  • poi导入导出

    为什么要使用poi呢 为什么不适用easypoi和easyexcel呢 那肯定是这两个工具类不能实现功能 所以才采用poi啊 一般的导入导出 就采用上面两个工具就可以了 简单方便 但是如果你要对单元格进行复杂的操作的时候 需要对特定的单元格
  • C#关于时间(获取特定格式的时间及多种方式获取当前时间戳)以及10位和13位时间戳转为特定格式

    一 获取当期时间并转为特定格式 string tradeTime DateTime Now ToString yyyyMMddHHmmss DateTimeFormatInfo InvariantInfo 设置所需要的时间格式 string
  • 判断对象里的属性是否都为空(适用字符串、数组结构对象)

    好久没写博客记录了 场景 表单填写时 填写完对应栏目需要有填完的标识 下面是自己写的一坨代码 export function objecAtrtIsEmpty data 如果是数组 遍历数组里面的 if Array isArray data
  • ubuntu18.04安装pycharm专业版

    安装的pycharm版本 2017 4 操作系统 ubuntu18 04 LTS 步骤1 在官网下载安装包 https www jetbrains com pycharm download section linux 下载文件位于 Down
  • 一. 了解web及网络基础

    一 了解web及网络基础 web world wide web 万维网 是建立在互联网上的网络服务 分为网页和服务器 起初 互联网还只是少数人 为了能够远距离分享知识 前辈们提出一种设想 借助超文本 包含其他文档链接的文本 连成可相互参阅的
  • wangEditor 富文本在vue3的使用

    安装 yarn add wangeditor editor 或者npm install wangeditor editor save yarn add wangeditor editor for vue next 或者 npm instal
  • java大文件下载内存溢出解决办法

    第一种解决办法内存够用的情况 启动时设置 Xmx的值大一点 比如2G 第二种办法代码中使用缓冲流的方式 如果是本地文件就更好 如果是还需要再去文件服务器中下载一次也行 例子 private void download String down