【发布时间】:2015-10-27 14:32:28
【问题描述】:
我一直在使用 Java 处理大型日志文件(约 100 MB),并注意到 gzip 可以将它们压缩到约 3MB,使它们缩小 35 倍。
所以我想知道:现代操作系统会在将文件加载到内存之前对其进行压缩吗?使用 100 MB 的 RAM 来保存实际上只有 3 MB 信息的文件似乎很愚蠢。
还是相反?读取文件(以及处理编码等)的过程是否意味着占用磁盘 100MB 的文件实际上大于内存中的 100MB?
*加分:在加载文件之前我可以对文件进行预处理以减少我的JVM 的内存使用量有什么建议吗? (文件格式与Apache 服务器日志格式相同。)
【问题讨论】:
-
如果您将压缩数据保存在内存中,那么您必须在任何时候想要使用该数据时执行解压缩。要么,要么更改您的代码以处理压缩数据,这似乎非常压倒性且不必要。无论哪种方式,如果您想使用数据,则必须在某个时候将其解压缩为其原始形式,除非您不打算操作/访问该数据的某些部分。你有什么问题?
标签: java file memory centos filesystems