草庐IT

memory-barriers

全部标签

Java 安全 : how to clear/zero-out memory associated with an object?(和/或确保这是特定变量的唯一实例/副本)

我正在讨论如何保护存储在Java程序中的敏感信息(例如密码)。根据安全要求,清除包含敏感信息的内存,例如通过将字节的值设置为全零。问题是攻击者可以观察到与应用程序进程关联的内存,因此我们希望尽可能地限制此类敏感信息存在的时间窗口。以前项目涉及到C++,所以一个memset()就足够了。(顺便说一句,memset()的使用受到了质疑,因为已知一些编译器会优化它的使用,基于这样的假设,即由于以后不使用内存,因此无需首先将它归零。对于那些在谷歌上搜索“memset”和“clearmemory”等的人来说,这个简介是免责声明。现在我们手头有一个Java项目正在满足这个要求。对于Java对象,我

ruby-on-rails - 获取 Rails 错误 "Cannot allocate memory"

在我的项目中有一个脚本返回我必须在表格中显示的产品列表。为了存储脚本的输入,我使用了IO.popen:@device_list=[]IO.popen("devicelist").eachdo|device|@device_listdevicelist是给我产品列表的命令。我将@device_list数组返回到我的View,以便通过迭代它来显示。当我运行它时出现错误:Errno::ENOMEM(Cannotallocatememory):forIO.popen我有另一个脚本devicestatus只返回true和false但我得到了同样的错误:defcheck_status(device

c++ - 收缩 std::vector 's size to fit its actual data to save memory usage? vec.swap() doesn' t 在 MSVC 中工作吗?

实际上我的程序中有数百万个vector对象。默认情况下,对于每个vector,系统将分配比实际需要更多的空间,因为这些vector在完成加载后是只读的。所以我想缩小自己的容量来节省内存。一种典型的方法是使用vector.swap()方法,如thisquestion中所述:std::vectortmp(v);//copyelementsintoatemporaryvectorv.swap(tmp);//swapinternalvectordata我试过这段代码,但发现.swap()操作实际上并没有减少内存成本。(我查看了任务管理器中的PrivateWorkingSetsize来获取进程的

c++ - 为什么 MPI_Barrier 会导致 C++ 中的段错误

我已将我的程序缩减为以下示例:#includeintmain(intargc,char*argv[]){intrank,size;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&rank);MPI_Comm_size(MPI_COMM_WORLD,&size);MPI_Barrier(MPI_COMM_WORLD);MPI_Finalize();return0;}我编译并运行代码,得到如下结果:My-MacBook-Pro-2:xCode_TrapSimuser$mpicxx-g-O0-WallbarrierTest.cpp-ob

c++ - cc1plus : Virtual memory exhausted

我正在尝试在Linux中使用qcc在QNXMomenticsIDE(4.6)中构建一个项目。我未能成功构建过程并出现以下错误:virtualmemoryexhausted:Cannotallocatememory/opt/qnx641/host/linux/x86/usr/lib/gcc/i386-pc-nto-qnx6.4.0/4.3.3/cc1pluserror1项目有一个cpp文件,里面有1.3以上的MLOC。这是一个从大型Matlab/SIMULINK仿真模型自动生成的代码,因此不容易分而治之。很难理解这是qcc编译器的LOC限制还是由于自动生成代码中的编程习惯。我想问:qcc

c++ - managed_shared_memory 与 windows_shared_memory

我目前正在查看Boost的进程间库的文档,并试图找出其中的区别。据我所知,唯一的区别是持久性(windows共享内存在最后一个进程退出时被释放,managed_shm仅在被告知时才被释放),是否还有速度等其他差异,我错过了? 最佳答案 不同之处在于managed_shared_memory遵循POSIX要求,因此emulatingthepartswindows_shared_memory丢失(即持久性)。这是完成viamemoryfilemapping.managed_shared_memory的缺点似乎是与其他应用程序(使用nat

c++ - 获取 OpenCV 错误 : Insufficient memory while running OpenCV Sample Program: "stitching_detailed.cpp"

我最近开始使用OpenCV,目的是将大量图像拼接在一起以创建大型全景图。为了开始我的实验,我查看了OpenCV文件附带的示例程序,以了解如何实现OpenCV库。因为我对图像拼接很感兴趣,所以我直接找到了“stitching_detailed.cpp”。代码可以在以下位置找到:https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/stitching_detailed.cpp?rev=6856现在,这个程序完成了我需要它完成的大部分工作,但我遇到了一些有趣的事情。我发现对于15个可选投影变形器中的9个,我在尝试运

c++ - 如何强制 Windows 向所有应用程序发送 'LOW_MEMORY' 信号?

我正在开发一些“释放RAM”工具,它必须强制Windows向所有应用程序发送'LOW_MEMORY'信号(要求所有应用程序释放它们未使用的数据、SQL服务器和文件缓存会被清除,因此您最终会获得大量额外的可用空间)。在C++中执行此操作的最佳方法是什么?对我来说最“自然”的解决方案是分配大量内存,但它是否“好”且“稳定”方法?也许在WinAPI或其他地方有任何适用于它的c++Windowsnative函数?附注该工具的概念来自(我知道更好的方法是......购买一些RAM,但我现在必须编写这样的工具):https://superuser.com/questions/214526/how-

c++ - CUDA 探查器 : Calculate memory and compute utilization

我正在尝试使用ubuntu上的CUDAnsight分析器为我的GPU加速应用程序的内存带宽利用率和计算吞吐量利用率建立两个总体测量值。该应用程序在TeslaK20cGPU上运行。我想要的两个测量值在某种程度上与此图中给出的测量值相当:问题是这里没有给出确切的数字,更重要的是我不知道这些百分比是如何计算的。内存带宽利用率Profiler告诉我我的GPU的最大全局内存带宽为208GB/s。这是指设备内存BW还是全局内存BW?它说的是全局,但第一个对我来说更有意义。对于我的内核,分析器告诉我设备内存带宽为98.069GB/s。假设最大208GB/s是指设备内存,那么我可以简单地将内存带宽利用

c++ - 奇怪的 "Memory Leak Detection"错误 C++

我有一个非常奇怪的内存泄漏问题。我使用_CrtDumpMemoryLeaks来检查泄漏。这是我的WinMain函数:intAPIENTRY_tWinMain(_In_HINSTANCEhInstance,_In_opt_HINSTANCEhPrevInstance,_In_LPTSTRlpCmdLine,_In_intnCmdShow){UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);//////////////////SETUPCHECKSFORMEMORYLEAKS///////////