A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

IO流中自定义缓冲区和Buffered缓冲区有什么区别,他们在内存当中都是怎么实现的?为什么buffered是一次性读取吗?,自定义缓冲区最大可以自定义多大呢?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

倒序浏览
自定义缓冲区就是模拟了一下Buffered内部的实现原理,如果是自定的话,不要超过虚拟机内存就好。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
byte[] arr = new byte[1024];//这里可以定义1024的整数倍,我算了一下估计是170M左右,再大内存就溢出了啊,1024是1k  1024*1024=1M 1024*1024*170 就是最大了,为什么170不能再大了?谁定义的这个170呢?
回复 使用道具 举报
自定义的时候注意虚拟机默认内存是64M,所以尽量不要大于他,如果需要更大的内存空间,你可以在虚拟机启动时手动制定开辟空间大小

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
自定义,第一是为了让你知道它的原理,第二就是定义一个适合自己用的缓冲区。Java定义的许多东西有时候都不能完成我们所要执行的任务,所以毕老师讲解的时候就多教了一些关于自定义的方法。不光是缓冲区,类加载器之类的也要自定义。Java只是一个平台,所有代码都有一定的格式,也都有规定的。可以说Java只是给你了一个模板。任何你不满意的地方几乎都是可以根据自己的需要在规定之内自己重新定义的。关于缓冲区,你想定义多大都可以根据你的需要定义。Java自身定义的缓冲区只是为了让你日常使用的。当你定义过大会溢出这个也是正常的,毕竟Java也只是一个程序,在系统中运行,也会有一定的限制。假如你以后从事JavaME的时候你就可以根据硬件来按自己的需求走了。毕竟那时只有一个Java,那么它就是老大了!!

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马