社区
Java SE
帖子详情
file.listFiles()内存溢出如何解决?
mdjz
2009-08-24 09:55:47
想做一个根据文件名查找某个文件夹下的文件功能, 由于文件夹非常庞大, 导致使用file.listFiles()时内存溢出, 调整虚拟机参数也不行, 怎么解决?
...全文
2783
15
打赏
收藏
file.listFiles()内存溢出如何解决?
想做一个根据文件名查找某个文件夹下的文件功能, 由于文件夹非常庞大, 导致使用file.listFiles()时内存溢出, 调整虚拟机参数也不行, 怎么解决?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
x-teamer团队
2009-08-24
打赏
举报
回复
1
[Quote=引用 11 楼 mdjzjt 的回复:]
感谢大家, 搞定了, 找到了一个笨蛋方法, 效率上还行 哈哈 谢谢 结贴了
[/Quote]
分享一下吧~
u010630577
2021-07-02
举报
回复
@x-teamer团队
怎么解决的?分享一下呗!
diggywang
2009-08-24
打赏
举报
回复
里面肯定有大的zip之类的压缩文件
wenzheng38
2009-08-24
打赏
举报
回复
可以了解下windows里面自带的搜索功能,它是基于B+数搜索的。。。
mdjz
2009-08-24
打赏
举报
回复
感谢大家, 搞定了, 找到了一个笨蛋方法, 效率上还行 哈哈 谢谢 结贴了
APOLLO_TS
2009-08-24
打赏
举报
回复
java调用系统命令操作返回值即可查看!!
window
cd 需要查看的目录
dir 匹配串 /s/p
Linux
find 路径 模式
skyzxl
2009-08-24
打赏
举报
回复
[Quote=引用 6 楼 sixme 的回复:]
1.直接使用你需要查找的文件
2.如果存在则可以正常使用
3.如果不存在则会抛出“FileNotFound”异常,捕获即可
[/Quote]
问题可能是这样。
bigbug9002
2009-08-24
打赏
举报
回复
还有就是用 File[] listFiles(FilenameFilter filter) 用过滤器把需要的文件和目录保存下来,不需要的就不用保存了。
bigbug9002
2009-08-24
打赏
举报
回复
把递归算法,改为非递归算法。试试看
lookhang
2009-08-24
打赏
举报
回复
1.直接使用你需要查找的文件
2.如果存在则可以正常使用
3.如果不存在则会抛出“FileNotFound”异常,捕获即可
monkeyking1987
2009-08-24
打赏
举报
回复
当然会喽。如果一个文件夹下有上千个文件,调用file.listFiles()方法是很容易就把内存给占满了。此时可以判断一下file.listFiles()获得的文件数量,而在程序中只保留文件名,在需要时再调用相应的方法将文件内容给读出来就可以了。不要把所有文件的内容全加载进去。
closewbq
2009-08-24
打赏
举报
回复
这个网站介绍了相关东西,你可以去看下
http://study.feloo.com/news.php?id=197594
closewbq
2009-08-24
打赏
举报
回复
你是不是递归调用?如果是的话,就是在递归过程中不断的分配资源,而当只有最深层的目录完成后,才能释放这些资源,就有可能溢出。
lookhang
2009-08-24
打赏
举报
回复
我可能也会遇到这个问题~~~先做个记号~
knightzhuwei
2009-08-24
打赏
举报
回复
简单的文件夹行不?你把代码列出来看看。。
newDirectoryStream递归读取文件夹下的文件
正常递归读取文件夹,我们习惯于利用
File
的
list
File
()方法获取子文件夹及文件: new
File
("目录路径").
list
File
s
(); 如果目录路径下文件为百万级,则调用
list
File
s
()方法时直接
内存溢出
,所以不可取。 为了满足需求,我们通过api文档找到了一个方法 newDirectoryStream(Pathdir) //打开一个目录,返回一个Director...
内存溢出
异常
解决
方案总结
这几天刚好碰到一个java
内存溢出
的问题。一直尝试着
解决
这个问题目前想到了三个方法:一 调整 虚拟机参数二 立即 释放无用的对象三 利用序列化和反序列化技术
下面是具体的代码实现
package com.free;
import java.io.
File
;
import java.io.
File
InputStream;
import java.io.
File
NotFoundException;
import
内存溢出
异常
解决
方案
一 调整 虚拟机参数二 立即 释放无用的对象 三 利用序列化和反序列化技术 下面是具体的代码实现package com.free;import java.io.
File
;import java.io.
File
InputStream;import java.io.
File
NotFoundException;import java.io.
File
OutputStream;import jav
黑马程序员-
File
类的常见方法及使用
------- android培训、java培训、期待与您交流! ----------
Java序列化优化:IRIS OUT懒加载技术
解决
内存溢出
实战
对象序列化是Java应用中数据持久化和传输的基础技术,其核心原理是通过将对象状态转换为字节流实现跨进程或持久化存储。传统序列化方案如Java原生Serializable接口存在内存管理效率低下的问题,反序列化时会加载完整对象图,即使只需要访问部分数据也会造成内存浪费。IRIS OUT技术通过Externalizable接口实现选择性序列化和懒加载机制,显著提升内存使用效率,特别适用于处理大型对象和高并发场景。在数据导入导出、缓存系统和分布式计算等应用场景中,这种按需加载的技术能够有效避免
内存溢出
(OutOf
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章