liujwcool1 2024-03-12 20:09 采纳率: 0%
浏览 5

qnx700 mmap接口报内存不足问题

问题遇到的现象和发生背景

在高通8155平台下,qnx700系统下做开发,使用了mmap接口对一个1.3G文件的文件进行映射,报not enough memory错误,TOP指令显示系统可用内存未1167M

操作环境、软件版本等信息

QNX700

尝试过的解决方法

```c

/*
 * Map a file (from fd's current offset) into a shared, read-only memory
 * segment.  The file offset must be a multiple of the page size.
 *
 * On success, returns 0 and fills out "pMap".  On failure, returns a nonzero
 * value and does not disturb "pMap".
 */
int sysMapFileInShmem(int fd, MemMapping* pMap)
{
    off_t start;
    size_t length;
    void* memPtr;

    assert(pMap != NULL);

    if (getFileStartAndLength(fd, &start, &length) < 0)
        return -1;

    memPtr = mmap(NULL, length, PROT_READ, MAP_FILE | MAP_SHARED, fd, start);
    if (memPtr == MAP_FAILED) {
        LOG_WARN("mmap(%d, R, FILE|SHARED, %d, %d) failed: %s\n", (int) length,
            fd, (int) start, strerror(errno));
        return -1;
    }

    pMap->baseAddr = pMap->addr = memPtr;
    pMap->baseLength = pMap->length = length;

    return 0;

###### 我想要达到的结果
mmap理论上讲不占用物理内存,不应该报内存不足


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/bd5c38141afa4147a00579bdbb8d0c74.png "#left")
  • 写回答

5条回答 默认 最新

  • 鑫宝Code 前端领域新星创作者 2024-04-17 08:00
    关注
    此回答引用GPT4,由博主鑫宝Code参考后得出

    从您的描述来看,您在QNX 700系统下使用mmap接口对一个1.3G文件进行映射时遇到了内存不足的问题。尽管理论上mmap不占用物理内存,但在实际应用中,它可能会受到系统资源限制的影响。以下是一些建议和可能的解决方案:

    1. 检查系统资源限制:QNX系统可能会对内存映射文件的大小或数量有一定的限制。您可以查看系统文档或联系系统管理员以获取有关限制的详细信息。

    2. 调整虚拟内存设置:QNX系统使用虚拟内存管理来分配内存资源。您可以尝试调整虚拟内存设置,例如增加交换空间(swap space)或更改页面大小,以提高系统处理大文件映射的能力。

    3. 分段映射文件:由于您正在尝试映射一个1.3G的大文件,您可以考虑将文件分段映射到内存中。这意味着您可以将文件分成较小的块,然后逐个映射这些块。这样可以降低单个映射操作对系统资源的需求。在您的代码中,您可以修改length参数,使其表示较小的文件块大小,并在映射成功后逐步更新startlength以映射下一个文件块。

    4. 优化程序内存使用:检查您的程序是否存在内存泄漏或不必要的内存占用。优化程序的内存使用可以为映射操作释放更多资源。

    5. 考虑使用其他内存映射方法:如果问题仍然存在,您可以尝试使用其他内存映射方法,例如使用共享内存段(shared memory segment)或内存映射文件(memory-mapped file)。

    希望这些建议对您有所帮助。请注意,这些建议可能需要您对QNX系统和您的应用程序进行深入了解。如果您需要进一步的帮助,请随时提问。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月12日

悬赏问题

  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条