以某种方式多次打开共享内存是否不好?

问题描述

| 我有一个使用shm_open打开posix共享内存的类。现在,我必须多次创建此类的对象(总共5-10个对象),这意味着同一个共享内存将被打开多次。 共享内存的大小可变,范围从1k到500k。 有关的问题是: 1.这会导致内存使用增加吗? (我看不到这种情况,所以我的猜测不是) 2.访问共享内存时是否会导致性能下降? 3.还有什么可能出错吗?     

解决方法

        答案在您将shm_open链接到的页面上:   shm_open()创建并打开一个新的,或打开一个现有的POSIX共享内存对象。 POSIX共享内存对象实际上是一个句柄,不相关的进程可以使用该句柄来mmap(2)共享内存的相同区域。 要访问共享内存对象,您需要一个句柄。 shm_open()可以用于打开(创建)新的和重新打开现有的共享内存对象。重新打开现有对象时,不会增加内存,也不会导致性能下降。     ,        它不会增加内存使用量,但是每次打开共享内存时,您都会用尽句柄,并且可能会用完。 (每个进程都有打开句柄的数量限制。) 您可能需要使用信号量之类的同步对象来管理对共享内存的访问。 Mmap每次都映射到一个不同的基地址,因此将指向共享内存的指针存储是一个坏主意。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...