问题标签 [memory-mapping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Tika 无法删除临时文件
在我们的应用程序中,我们使用 Apache Tika 处理文件。但是有些文件(例如 *.mov、*.mp4)是 Tika 无法处理的,因此会将相应的 *.tmp 文件留在用户的 Temp 文件夹中。经过一番研究,我发现这是一个已知的错误:https ://issues.apache.org/jira/browse/TIKA-1040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
在最后一条评论中,一位用户谈到了一种解决方法,但它对我不起作用:
使用上面的代码仍然会在 Temp 文件夹中留下临时文件。有什么办法可以解决这个问题?
ios - 内存映射图像在 iOS 上可行吗?
今天我醒来时想到了一个我认为是一个伟大的想法或一个完全愚蠢的想法。我需要编写一个使用大约 5k 像素正方形的巨大可滚动图像的 iOS 应用程序,由于内存限制,无法在 iOS 上加载如此大的图像。
我知道CATileLayer
,但小滞后不符合我的要求。所以我认为可以对文件进行内存映射并从中读取图像。不幸的是它不起作用,这里是剪断的代码:
在图像视图必须显示大图像之前,一切似乎都有效。因为我记得UIImage
是一个很小的包装器CGImage
,在需要渲染图像之前它不会加载图像。
可能在从 中创建图像的顺序中NSData
,数据被复制到 RAM 中触发内存警告,而不是应用程序崩溃。
所以我也尝试过使用ImageIO
and CGDataProvider
s 进行各种组合,但没有任何成功。
现在我告诉自己,主要想法可能完全错误,有人能指出我正确的方向吗?
c - msync 是原子的吗?
使用mmap
//时,读/写是原子的吗msync
?munmap
(假设磁盘将在断电时完成所有挂起的写入)
linux - pci_iomap:查询
所以我目前正在使用 ioremap_no_cache() 映射我卡中的 DoorBell 区域,并且只有 4K 大小。但是(无意中)我现在意识到我也可以在这个 4K 区域之后按门铃/写入位置,奇怪的是它似乎有效。我想知道它是如何/为什么工作的,如果可能的话,通过这个深入了解 ioremap_no_cache() 是如何在幕后工作的?代码阅读和手册页只提供了这么多帮助。请注意,默认情况下,第一个 4k 区域之外的额外 4K 区域不存在
java - 如何在 Java 中内存映射(mmap)一个 linux 块设备(例如 /dev/sdb)?
我可以使用 Java 读/写 linux 块设备java.nio
。以下代码有效:
但是,内存映射不起作用。以下代码失败:
这失败并出现错误:
有解决办法吗?也许通过使用不同的库?我在某处读到,也许通过使用 JNI 我可以做到这一点,但我找不到任何来源。
linux - 如何复制 Linux 设备文件?
在我们的系统中,我们使用mmap()
文件/dev/mem
来访问内存映射的硬件设备。但是,使用此设备文件需要以超级用户模式 ( sudo
) 运行应用程序才能写入物理设备。我们正在寻找摆脱这种限制的方法。
据说,可以更改设备文件的访问权限。但是,这不是推荐的解决方案。
我们的一个建议是,我们可以复制/dev/mem
设备,更改其写入权限,然后mmap()
在新设备上使用,而不是为硬件编写新的、完整的内核模式设备驱动程序。
阅读了一些手册页,我找到了该mknod
命令。所以我用它来创建一个特殊的文件,emem
具有与文件相似的属性/dev/mem
(尤其是设备的主要和次要版本)。在我的程序中使用新文件,我仍然需要duso
. 因此,我将其属性更改为完整的 r/w 权限,但它并没有改变对sudo
.
接下来,我尝试将dev/mem
自身的权限更改为 0777,但它也没有帮助。
这导致了以下问题:
对
sudo
特权的需求是来自使用mmap()
还是来自它映射的特定设备?如果是前者,如何消除这个?
如果是后者,我怎样才能复制
/dev/mem
具有完全权限的功能?
.net - 两个 .NET 进程何时可以共享 DLL 内存?
我有两个引用同一个类库的 ASP.NET 网站。目前,我们使用两个类库副本发布该站点。这会浪费内存吗?操作系统是否知道文件的两个副本是相同的,因此可以为 DLL 的代码部分共享内存?如果我将它复制到 GAC 或另一个共享位置,这样它只是一个物理文件,它会映射更少的总内存吗?
c++ - 使用 boost 的内存映射二维数组
我正在尝试使用 boost 将文件映射到每行有 3 个浮点数的内存(点的 x、y、z 坐标)。我正在尝试以 cl_float3 类型(对于 openCL)存储数据,但它似乎不起作用。这是我的代码:
当我尝试使用数据数组时,它会因读取冲突而出现访问冲突错误。有什么帮助吗?
c - 内存映射 IO 和 GCC 优化
我一直在搞乱剑桥烘焙 pi 教程(带有树莓派小演示的基本操作系统开发)。只有我一直在用 C 编写代码。我已经设置了开发环境,并且可以在关闭但未打开 GCC 优化的情况下成功运行我的代码。
使用内存映射 IO 的代码会出现问题(如果我编译除以下文件之外的所有其他内容并进行优化,它就可以工作)。我最初认为我的指针没有被声明为易失性,因此编译器正在优化对内存的实际写入并改用寄存器。但即使我将它们声明为易失性,问题仍然存在。
这是我写内存的方法:
指针是 volatile 类型,所以我不明白为什么 GCC 会决定不进行实际写入。还有什么我需要注意的吗?我误解了volatile的使用吗?
完整的工作文件(无论如何都关闭了优化):
编辑:
查找了如何查看程序集,非常有用,谢谢。如果我从 uart i init 中取出前 2 次写入(直到第一次延迟调用),我得到:
未优化:
优化:
唯一的区别似乎是对于未优化的,它不会向 .L2 和 .L2+4 标签添加偏移量,而优化的标签会这样做。除非这些标签上的指针已经准备好在它们上面计算偏移量。
我有一个分叉的 qemu (qemu-rpi) 为树莓派支持而修改,所以我将尝试检查 r3 和 r2 寄存器中加载了哪些值,以查看它们是否是存储发生之前的正确指针,然后我'我将使用断点检查 putc 是否在传输上循环。对我的环境还不是很熟练,所以这可能需要我一段时间!
ide - bios将控制权转移到AHCI扩展ROM时的内存模型?
据我所知,AHCI 扩展 ROM 使用 IDP(索引/数据对)来访问 AHCI 寄存器(全局和端口寄存器)。
ahci 规范 v1.3 说:
IDP 机制允许主机软件使用间接 I/O 寻址访问所有 MMIO 寄存器
因此即使ABAR在1MB以上,扩展ROM仍然可以通过这种方式以实模式访问MMIO。
但是我们发现在访问 AHCI MMIO 寄存器时,下面的扩展方式是可以的:
如果上面没问题那么说明现在的内存模型不是实模式(我猜是大实模式,也就是4G下可以访问)
我们的问题是,现在 BIOS 将控制权转移到扩展时的内存模型是否是大实模式(无论如何,不是实模式)?如果是,那么我们总是可以使用内存操作来访问 AHCI 的 MMIO... 对吗?
- 之前使用IDP的原因可能是:那个时候控制权交给扩展还是实模式吧?所以内存模型取决于系统 BIOS,对吗?