转: mmap文件映射内存分析
来源:互联网 发布:淘宝详情页怎么做 编辑:程序博客网 时间:2024/04/28 07:11
http://edisonlz.iteye.com/blog/1197453
http://blog.yufeng.info/archives/2456
主要是了解mac下vmmap命令配合使用情况,mmap内存映射对应java nio的RandomAccessFile的FileChannel进行map()操作。
public class RandomMapFileReadTest { static int length = 0x8000000; // 128 Mb public static void main(String[] args) throws FileNotFoundException { try{ // 为了以可读可写的方式打开文件,这里使用RandomAccessFile来创建文件。 FileChannel fc = new RandomAccessFile("test.dat", "rw").getChannel(); //注意,文件通道的可读可写要建立在文件流本身可读写的基础之上 MappedByteBuffer out = fc.map(FileChannel.MapMode.READ_WRITE, 0, length); //写128M的内容 byte[] readArray = new byte[1024]; for (int i = 0; i < length; i++) { byte byteChar = out.get(); readArray[i%1024] = byteChar; if(i == length/2) { Thread.sleep(20); System.out.println("read half..."); } }// System.out.println("Finished writing"); //读取文件中间6个字节内容 System.out.println("Finished getting " + readArray.length); fc.close(); }catch (Exception e) { e.printStackTrace(); } }}
一个已经存在的128M文件,在map后,通过for循环不断读入内存,可以通过
vmmap -resident <pid>
命令看出,map的resident内存是一步一步读入的:
yangyamin:~ yangyamin$ vmmap -resident 1486 | grep testmapped file 0000000115a8d000-000000011da8d000 [128.0M 56.9M] rw-/rwx SM=PRV /Users/yangyamin/data/spv/test.datyangyamin:~ yangyamin$ vmmap -resident 1486 | grep testmapped file 0000000115a8d000-000000011da8d000 [128.0M 89.7M] rw-/rwx SM=PRV /Users/yangyamin/data/spv/test.datyangyamin:~ yangyamin$ vmmap -resident 1486 | grep test\mapped file 0000000115a8d000-000000011da8d000 [128.0M 107.5M] rw-/rwx SM=PRV /Users/yangyamin/data/spv/test.datyangyamin:~ yangyamin$ vmmap -resident 1486 | grep testmapped file 0000000115a8d000-000000011da8d000 [128.0M 125.9M] rw-/rwx SM=PRV /Users/yangyamin/data/spv/test.datyangyamin:~ yangyamin$ vmmap -resident 1486 | grep testmapped file 0000000115a8d000-000000011da8d000 [128.0M 128.0M] rw-/rwx SM=PRV /Users/yangyamin/data/spv/test.datyangyamin:~ yangyamin$ vmmap -resident 1486 | grep testmapped file 0000000115a8d000-000000011da8d000 [128.0M 128.0M] rw-/rwx SM=PRV /Users/yangyamin/data/spv/test.dat
0 0
- 转: mmap文件映射内存分析
- Mongodb源码分析--内存文件映射(MMAP)
- Mongodb源码分析--内存文件映射(MMAP)
- Mongodb源码分析--内存文件映射(MMAP)
- Mongodb源码分析--内存文件映射(MMAP)
- Mongodb源码分析--内存文件映射(MMAP)
- 文件内存映射(mmap)
- 内存映射文件(MMAP)
- mmap 文件映射内存详解
- linux内存映射mmap原理分析
- linux内存映射mmap原理分析
- linux内存映射mmap原理分析
- linux内存映射mmap原理分析
- linux内存映射mmap原理分析
- linux内存映射mmap原理分析
- Linux的mmap文件内存映射机制
- Linux的mmap文件内存映射机制
- Linux的mmap文件内存映射机制
- 内核调试神器SystemTap — 简介与使用(一)
- 分本挖掘之基本概念
- 电脑蓝屏代码大全
- applicationContext.xml报Error occured processing XML 'Prohibited package name: java.lang'.
- servlet中如何获取PageContext对象
- 转: mmap文件映射内存分析
- gitflow 开发流程
- gcc warning选项
- java 基础知识学习指南
- OpenJudge-Noi 1750 全排列
- Maven学习记录
- Linux内核分析实验1——汇编一个简单的C程序
- 我们距离真正的移动办公,还有多远
- abp及实战框架概述