IO/内存/文件系统-Ⅱ

发布时间:2019-06-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了IO/内存/文件系统-Ⅱ脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

@R_778_1262@

tmpfs, 是一种基于内存的文件系统, 使用虚拟内存(VM); 可使用Ram, 也可使用swap分区.
因此它有两个优点, 一是速度快, 二是可动态分配虚拟所占空间大小, 按需变更.

Linux内核配置通常会开启tmpfs,并且mount/dev/shm, 可通过DF命令查看, 可通过mount命令变更大小, 可通过 "ls /dev/shm"根据目录下是否有文件判断是否被使用.
默认/dev/shm分区大小是物理内存的50%.

用处

  • 存放缓存, 如squid
  • 存放临时文件, 如浏览器缓存/Unix socket

注意点

  • 重启后数据丢失, 如需持久化需要自行实现

文件读写

当文件不大的时候, 直接读进内存然后操作必然是最快的方式. 但是对于大文件来说, 会有其它的一些方式.

比如在python中, oPEn文件后直接调用read函数会将文件整个读进内存, 如果文件接近或超过内存大小, 自然就会发生IOError了.
常用的是使用按行循环的方式, 此时是python虚拟机在内部对所用buffer进行管理. 本质上来讲应该就是按行缓冲进行输出.

wITh open("s1.txt", "r") as f:
    for line in f:
        PRint line

在Java中, 使用内存映射(Memory-Mapped Files)和RandomAccessFile, 将文件映射到进程地址, 即虚拟内存空间, 然后可以通过操作内存来进行读写.

RandomAccessFile, 本质上是把DatainputStreamDataOutputStream结合,加上移动用的seek,获得大小的length、跳过字节的skipBytes等函数结合起来, 通过mmap调用, 将文件内容按页映射为进程虚拟地址空间的一段连续的内存地址; 由于避免了在用户空间和内核空间互相拷贝数据, 速度会很快.

Huge Page

主要用于数据库方面.
待续

脚本宝典总结

以上是脚本宝典为你收集整理的IO/内存/文件系统-Ⅱ全部内容,希望文章能够帮你解决IO/内存/文件系统-Ⅱ所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。