Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192661
  • 博文数量: 44
  • 博客积分: 1515
  • 博客等级: 上尉
  • 技术积分: 480
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-06 16:39
文章分类

全部博文(44)

文章存档

2013年(3)

2012年(2)

2011年(2)

2009年(20)

2008年(17)

我的朋友

分类: WINDOWS

2008-09-04 15:33:53

在开发pc端软件的过程中发现,系统的可用内存直线下降,直至几十M,甚至更低。
跟踪发现,问题出在CreateFile的文件标志。
写了一个测试程序,如下:
#include
#include
#include
int main()
{
    HANDLE h_file=CreateFile("e:\\uvideo\\2008-07-08-15-31-24_o.h264",
        GENERIC_READ|GENERIC_WRITE,
        FILE_SHARE_READ|FILE_SHARE_WRITE,
        0,
        OPEN_EXISTING,
        FILE_FLAG_RANDOM_ACCESS,//todo: sequential access
        0);
     //FILE_FLAG_NO_BUFFERING,
    if(h_file==INVALID_HANDLE_VALUE)
        return 0;
    char *buff=(char*)malloc(1000*1024);
    DWORD read_size=0;
    while(1)
    {
        ReadFile(h_file,buff,1000*1024,&read_size,NULL);
        if(read_size!=1000*1024)
            break;
        Sleep(10);
    }
   
    return 0;
}

在运行过程中,系统可用物理内存一直减少,最少到几M,后来将FILE_FLAG_RANDOM_ACCESS标志改为FILE_FLAG_NO_BUFFERING问题解决。
以FILE_FLAG_RANDOM_ACCESS标志打开文件时,系统使用了较多的缓存。


阅读(2985) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~