关于NIO处理大文件的具体情况

八月长安 发布于 2015/09/14 19:34
阅读 609
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

@李嘉图 你好,想跟你请教个问题:关于nio处理大文件的具体,可否指导,如果方便的话

加载中
0
李嘉图
李嘉图
你好,有什么问题?就直接说吧,我看看能不能帮到你.
八月长安
八月长安
我在用nio处理大文件的时候报GC,对于程序还是GC的优化问题你有遇到了吗?如果有,能否给予一些建议和指导
0
李嘉图
李嘉图

强软弱虚,你自己把握,因为具体的业务我也不清楚.

尽量实现对象的复用,提升对象的生命周期.

还有对于string的处理,推荐一种做法.如下.

StringBuilder sb=new StringBuilder();
String s1="abc";
String s2="def";
for(int i=0,i<1000;i++){
  sb.append(s1).append(s2);
  sb.delete(0,sb.length());
}



就是在循环中不要用+来拼接字符,这样编译器会每一行都会新建一个stringbuilder来替换.这样既节省了内存,也减少了GC的时间.

同时,涉及到字符串拼接时,一定要注意对象的复用.

0
徐迎龙
徐迎龙
用MappedByteBuffer
八月长安
八月长安
回复 @嫂来哇 : 没有,是目前处理的文件没有达到那么大,但这还是个问题,如果你有这方面的经验,敬请指导。
徐迎龙
徐迎龙
回复 @八月长安 : 怎么样,搞定了吗,这几天都没怎么上网,不好意思
八月长安
八月长安
你有用过吗?能否给个处理大文件的demo
0
徐迎龙
徐迎龙
该评论暂时无法显示,详情咨询 QQ 群:点此入群
徐迎龙
徐迎龙
回复 @八月长安 : 这个不行,控制不到堆外内存
八月长安
八月长安
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
GITTODO
GITTODO
nio就不推荐用来处理大文件
GITTODO
GITTODO
回复 @八月长安 : 我是这么理解的,nio对I/O口的高复用改造,模拟的是linux的epoll方法来处理连接。而大文件要得是大的内存控件,I/O使用时间的占用。要不你把JVM的堆改大,要不学迅雷吧,分割文件资源
八月长安
八月长安
你确定?
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部