内存中的文件大小与文件系统中的大小相同吗?

mch*_*.ja 5 java memory filesystems centos file

我一直在使用Java中的大型日志文件(~100 MB),并注意到gzip可以将它们压缩到大约3MB左右,使它们缩小35倍.

所以我想知道:在将文件加载到内存之前,现代操作系统会压缩文件吗?使用100 MB的RAM来保存一个真正只有3 MB信息的文件似乎很愚蠢.

还是相反?读取文件(以及处理编码和诸如此类)的过程是否意味着磁盘上占用100MB的文件实际上大于内存中的100MB?

*奖励积分:任何预处理建议我可以在加载之前对我的文件做些什么来减少我JVM的内存使用量?(这些文件的格式与Apache服务器日志的格式相同.)

Jas*_*son 0

现代操作系统在将文件加载到内存之前会对其进行压缩吗?使用 100 MB RAM 来保存实际上只有 3 MB 信息的文件似乎很愚蠢。

这取决于所涉及的应用程序。某些应用程序可能会压缩内存中保存的数据,而其他应用程序可能不会。

或者恰恰相反?读取文件的过程(以及处理编码等)是否意味着在磁盘上占用 100MB 的文件实际上比在内存中占用 100MB 还要大?

同样,完全取决于应用程序。

*奖励点:在加载文件之前我可以对文件进行预处理以减少 JVM 的内存使用量,有什么建议吗?(这些文件与 Apache 服务器日志的格式相同。)

不要将不需要处理或显示的任何数据加载到内存中。生成平均值或总和所需的任何内容都可以临时加载并添加到运行总计中,然后可以丢弃。