-
关于文件操作的一个问题10
最近写一个Erlang小程序,最后运行时发现资源占用情况不对头,排查后基本确认是文件操作引发的问题,于是写了如下的测试代码:
-module(log_getter). -export([test/1]). -include_lib("kernel/include/file.hrl"). test(FilePath) -> Size = filelib:file_size(FilePath), {ok, File} = file:open(FilePath, read), Content = file:pread(File, {bof, 0}, Size), file:close(File).
在WinXP上运行werl,初始占用内存大约是12M,执行test程序,传入一个大约27M的文本,结果werl的内存占用峰值可以达到700多M,当test运行结束后,werl仍然占用大约240多M内存。
个人感觉是pread导致了这个现象,它在读数据时会疯狂的扩充缓冲区。但是程序运行结束后为什么没有回收所有的内存?那两百多M内存干什么去了?
由于我写的程序需要读取文件中指定位置区间的内容,而文件本身可能会很大(上G),不可能全部一次性载入内存,所以才不得不用pread。哪位高手能否指点一二?不胜感激。补充:在程序结尾使用一个garbage_collect()可以使Erlang吐出所有的内存(回到大约12M的样子),但这种方法实在是笨拙,而且test执行时要临时占用的700多M内存还是跑不掉的。希望能有更好的解决方法。
2010年3月12日 23:26
目前还没有答案
相关推荐
一个简单的文件系统(操作系统课程设计)主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。文件管理具有对文件存储空间的管理、目录管理、文件的读/写管理以及文件的共享与保护功能。...
使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求: 1、对程序的每一部分...
操作系统课程设计是IT学习中的重要环节,特别是在模拟真实操作系统功能时,如...这个过程将涉及到大量的编程实践,包括数据结构的设计、内存管理、文件操作接口的实现等,这些都是成为合格的IT专业人员所必备的技能。
在这个项目中,学生们被要求构建一个模拟的文件系统,该系统具备基本的文件操作功能,如读取、写入、创建和删除文件。这个设计不仅锻炼了学生的编程能力,也提升了他们对操作系统内核中文件系统机制的理解。 文件...
- **错误处理**:在进行文件操作时,应添加适当的错误处理代码,如`Try...Catch`结构,以应对可能出现的异常情况,如文件不存在、权限问题等。 - **定位**:可以使用`Seek`方法改变读写位置,`Tell`方法获取当前...
通过以上步骤,你可以构建一个完整的文件操作功能,包括打开、编辑、保存和另存为。在实际应用中,可能还需要考虑到用户权限、文件编码格式等更复杂的因素,但以上代码提供了基本的实现框架。记得在开发过程中,始终...
“关于安装XXX前,必须重新启动系统,以便使一些先前的文件更新操作完成”这个问题,暗示存在一个冲突,即某些文件的更新操作因先前的安装或卸载任务而被延迟。这些操作可能被安排在特定的时间点执行,以避免与当前...
总结来说,C++操作DBF文件涉及到理解DBF文件的内部结构,使用C++的I/O流进行文件操作,以及处理不同数据类型的转换。通过自定义的`Dbf`类,我们可以方便地读取、写入和查询DBF文件,而无需依赖Visual Foxpro驱动,...
操作系统课程设计中的文件管理系统是一个关键的实践项目,它模拟了一个基于树型目录结构的文件系统。这个设计的主要目标是让学生理解和实现类似Unix/Linux系统中文件和目录的组织方式。在这个系统中,文件和目录被...
在处理txt文件时,通常会先创建一个`CFile`对象,然后使用其成员函数进行文件操作。 2. **打开和关闭文件**:`CFile::Open`方法用于打开一个文件,需要提供文件名和访问模式(如只读、写入或读写)。完成操作后,用...
但需要注意的是,由于跨进程和线程同步的问题,直接在JNI层进行文件操作可能引入并发问题,需要额外的同步措施。 此外,使用JNI进行文件操作时,必须确保文件路径是相对于应用的私有数据目录的,或者具有适当的权限...
在提供的"分割文件工具"中,我们可以期待找到一个符合以上特点的工具,它应能有效地帮助我们处理大文件,将难以管理的大型日志文件分割成可轻松处理的小文件,以满足我们的日常需求。在使用时,根据具体的文件大小和...
总之,"数据库操作dll文件"是软件开发中一个关键的组件,它简化了数据库操作,提高了代码复用性,并通过pdb文件支持调试。正确地管理和使用这些文件对于开发高效且稳定的数据库驱动应用至关重要。
本文以一个名为"FilePdfDemo"的示例项目为例,探讨如何在VC++环境中进行PDF文件操作。 首先,我们需要了解PDF库的基本用法。例如,Adobe的PDF SDK提供了一系列API,可以用于创建、修改和显示PDF文档。使用这些API,...
在Qt编程中,删除一个目录下所有文件和文件夹是一个常见的任务,这通常涉及到文件系统操作。Qt提供了QDir类来处理与目录和文件相关的操作。以下是对这个知识点的详细说明: 首先,我们需要理解QDir类。QDir是Qt中的...
在MFC中,首先需要创建一个Excel应用对象,这通常通过`COleDispatchDriver`类来完成。例如: ```cpp COleDispatchDriver excelApp; excelApp.CreateDispatch(_T("Excel.Application")); ``` 这行代码会启动一...
文件监控通常是通过操作系统提供的API或者第三方库实现的,这些接口能够监听文件系统的事件,当有文件操作发生时,会触发相应的回调函数,从而记录这些操作。在Windows系统中,可以使用`ReadDirectoryChangesW` API...
CFile是MFC提供的一个基础文件操作类,支持对各种类型的文件进行读写操作。下面是一个简单的步骤说明: 1. **打开文件**:首先,创建一个CFile对象,并使用`Open`函数打开.bin文件。你需要提供文件路径、访问模式...
以上就是关于“VB自动保存窗体控件值到一个INI文件中”的基本知识点。这个过程涉及VB的文件操作、窗体控件交互以及配置文件管理,是VB开发中的基础技能之一。通过这个功能,我们可以实现用户个性化设置的持久化,...
经过了努力,查找了很多资料,终于可以利用STM32的SDIO操作文件系统读写了,但是发现为文件命名有问题,要熟悉rt_thread系统的可以上他官网下载说明书,地址:http://www.rt-thread.org/ 算是对它的一个宣传吧。 这里...