inputstream 占用内存吗_如果我将InputStream的对象保存到内存中,那么这是否意味着我将整个文件存储到内存中?...

我有一个类Sample,它有两个构造函数.一个采用File的对象,而另一个采用InputStream.

package org.xyz.core;

import java.io.File;

import java.io.InputStream;

/**

* Created by Ashish Pancholi on 26-03-2016.

*/

public class Sample {

File file;

public Sample(File file){

this.file=file;

}

public Sample(InputStream inputStream){

this.file = createFileFromInputStream(inputStream);

}

}

我使用LinkedBlockingQueue消耗Sample的对象,深度为10000;

BlockingQueue queue = new LinkedBlockingQueue(10000);

我们假设有两种情况:

情况A:我通过将InputStream作为参数传递来初始化Sample类的这么多实例,并将所有这些对象推送到LinkedBlockingQueue中.

情况B:我通过将File对象作为参数传递来初始化这么多的Sample类实例,并将所有这些对象推送到LinkedBlockingQueue中.

在哪种情况下我的程序会占用更多内存?如果我将InputStream的对象保存到内存中,那么这是否意味着我将整个文件存储到内存中?如果我有这么多大文件怎么办?

更新:

请注意:我通过这种方式创建InputStream:

InputStream is = new TarArchiveInputStream(new GZIPInputStream(new BufferedInputStream(new FileInputStream(file))));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值