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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张健 中级黑马   /  2012-5-28 19:35  /  2473 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学IO流的时候,经常会用 byte[] buf = new byte[1024]  用来缓存字节。
那么缓存是在哪里开辟出来的空间呢?  它与缓冲区是否是同一个概念。  即缓存是否就是缓冲区呢?
有点混乱,就是分不清 缓存、缓冲区。请高手讲明白一些。谢谢。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
我认为缓存,缓冲区,和非计算机领域的这两个词的意思是一样的,也就是一个概念。
但是IO流的BufferedReader这种,应该是使用数组当作缓冲区,那么缓冲区就应该在堆内存,因为创建的数组或者对象的实例都在堆内存中。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
同意楼上,我也认为缓存,缓冲区在IO流中是同一个概念,缓存一般用数组、链表或者哈希表(其实也是数组实现的)实现,实际JVM就是开辟出一段内存空间。并控制JAVA创建后的对像在这段内存空间的生存周期 ,如果不定义为全局静态变量的话,JVM就会在一段时间里把不再使用的对像回收掉 ,而如果使用JAVA缓存的话,就是让这个对像不会被JVM回收掉,这样以后再需要操作这个对像时就不需要JVM创建,销毁这些耗时的动作了。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 黑马—陈磊 于 2012-5-28 20:05 编辑

1.
【缓存】在【不同速率】的设备之间起到【缓冲】作用,
【缓存】是一种【物理装置】的名称,【缓冲】是一个【逻辑概念】。


【CPU】读写速度>【缓存】读写速度>【内存】读写速度>【硬盘】读写速度,他们之间都有【缓存装置】来协调。
在高速设备不读写的时候,缓存装置依然在从低速设备上【预读写】,准备高速设备下次的读写访问。

2.
【缓存】是物理上存在的装置,但是它们都集成进不同设备里作为附加部分。CPU里有,内存里有,硬盘里也有,因为他们给其他设备提供数据时,跟其他设备的速率都是不同的,需要【缓存装置】来【缓冲】。


3.
【动态存储器】是一类存储器的【学术称谓】,我们平常说的【内存】就是【动态存储器】。
【缓冲区】是一个逻辑概念,
我们说的【硬件缓冲区】就是指【缓存】;
我们说的【软件缓冲区】是指的【内存里的一部分存储区域】,这个区域是软件自己申请,操作系统批准并分配给软件使用的内存区域。

点评

给分鼓励下··注意楼下同学给你说的  发表于 2012-5-28 23:35

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
不要和计算机的缓存概念搞混,使用JAVA语言建立缓存指的是为你运行的代码开辟一块空间,用作临时存储,与计算机的缓存是两个概念.
回复 使用道具 举报
黑马—陈磊 发表于 2012-5-28 20:01
1.
【缓存】在【不同速率】的设备之间起到【缓冲】作用,
【缓存】是一种【物理装置】的名称,【缓冲】是一 ...

作为同学,我有义务提醒你,你这样回答问题会害了自己的...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马