对象的大小取决于它读取的内容

时间:2014-01-24 16:02:53

标签: java heap

如果我有2个inputStream个对象分别读取/保存4gb和4mb的文件。物体的大小是多少?对象的大小取决于内容吗?

我在处理大量Excel文件时遇到了每个宝石错误。

1 个答案:

答案 0 :(得分:5)

类型InputStream的对象只需要几个字节,无论底层流有多大。对于文件,它只记住操作系统的文件描述符,后者又跟踪文件中的当前位置。

对于大文件,我建议使用需要更多内存的BufferedInputStream,但速度也更快。您可以在创建实例时定义缓冲区大小,默认值为8KB,这对大多数用途都有用。

也就是说,PermGen错误与对象大小无关。对象在堆上分配。 PermGen意味着你要加载太多的类。有关如何解决此问题的详细信息,请参阅Dealing with "java.lang.OutOfMemoryError: PermGen space" error