草庐IT

Linux内存分段

全部标签

c++ - 我们可以假设内存地址的最后 2 位为 00 并重用这些位吗? Windows 7页面错误蓝屏

我的friend在64位Windows7PC上用C++编程,他想出了一个疯狂的想法来节省一点内存:他观察到他的内存地址的最后2位似乎总是00,所以他认为他可以将这些位用于其他用途,然后在需要内存地址时,只需使用位掩码将最后2位设置为0,无论是在写入还是读取内存时。他只使用最后2位的原因是它也需要在32位系统上工作。无论如何,在他的Windows764位系统上,他在运行程序时遇到以下蓝屏错误:PAGE_FAULT_IN_NON_PAGED_AREA会不会是他疯狂的内存节省想法造成的?也就是说,有时会发生内存地址的最后2位不是00的情况,并且他正在访问的内存部分位于他的一个内存页面上,部分

c++ - 内存映射文件和实际内存使用情况如何?

真的找不到任何关于这个的细节,这里是我所知道的关于Windows中的mmf的所有信息:在Windows中创建内存映射文件不会增加程序使用的表观内存量创建该文件的View消耗的内存相当于View大小这对我来说看起来很倒退,因为一方面,我知道mmf本身实际上有内存……在某处。如果我在mmf中写一些东西并破坏View,数据仍然存在。同时,为什么View会占用任何内存?它只是一个指针,不是吗?然后是ram中的实际内容和磁盘中的内容的奇怪之处。在具有分布式访问模式的大型mmf中,有时速度很快,有时则不然。我猜其中的一些有时会存储在文件中,如果一个与它或分页文件相关联,但实际上,我不知道。无论如何

linux - 如何在 Linux 终端中复制带空格的文件列表

我的Windows硬盘安装在Ubuntu16.04LTS的/media中。在我的终端中,我已导航到路径/media/me/OS/Users/Me/Music。从这里,我运行一个查找命令来搜索此Windows路径中的所有MP3:find.-typef-name*.mp3这将返回一堆.mp3文件路径(颜色没有任何意义;一定是通过wiki格式发生的):./iTunes/iTunesMusic/YeahYeahYeahs/It'sBlitz/01Skeletons.mp3./iTunes/iTunesMusic/YeahYeahYeahs/It'sBlitz/GoldLion.mp3./iTu

windows - 监控您自己进程中的内存使用情况

让我们暂时搁置海森堡。我将如何从我自己的进程中监控该进程使用了​​多少内存?(我可能故意低估了问题,梦想有创意的答案......) 最佳答案 Quassnoi是正确的-但它也可能值得检查我们的这个问题:HowtodetermineCPUandmemoryconsumptionfrominsideaprocess其中包括代码示例 关于windows-监控您自己进程中的内存使用情况,我们在StackOverflow上找到一个类似的问题: https://stack

java - 从 Java date.getHour() 获取 Linux 和 Windows 的时差

我有一些解析字符串并创建日期对象的Java代码。在Linux上,一切正常,但在Windows上,它连续从19:00:00开始,而不是00:00:00。这是代码:if(currTask!=null){if((m=p0.matcher(currTask)).matches()){date=newDate(Long.valueOf(m.group(2))-Long.valueOf(m.group(1)));}elseif((m=p.matcher(currTask)).matches()){date=newDate(System.currentTimeMillis()-Long.valueO

c++ - 从另一个进程中获取内存

在Windows中,假设我使用DLL注入(inject)进入另一个进程。我还对我注入(inject)的进程的内存进行了一些截屏,并知道我想要提取的数据的位置。假设在0xaaaaaaaa处的另一个进程中有包含特定值的数据。我如何从那个过程中获取这个值,以便我可以在我的注入(inject)应用程序中使用它?既然我被注入(inject)到进程中,我可以只使用像memcpy这样的东西吗?memcpy(value,0xaaaaaaaa,10);我假设它可能比这更复杂?编辑:对于下面的回复,我看不出WM_COPYDATA对我有何帮助,因为它用于将数据发送到另一个应用程序,而不是用于从现有应用程序检

java - Java 程序在 Linux 和 Windows 之间的性能比较

我在Windows7和Linux(Debian)上运行了一段Java代码(测量解析和验证带有模式的xml文件所花费的时间)。现在,与Windows平台相比,在Linux平台上花费的时间应该少得多。但是两种情况下记录的用户时间是一样的。我正在修复,因为我还在两个平台上运行了一个简单的基准测试Java程序(它使用两个嵌套循环运行了大约900000次)。在Linux平台上花费的用户时间是在Windows上的大约60倍。我还必须提到,我在Java程序中使用了thaiopensourceAPI。(jing/trang项目)。我的系统使用32位Linux(Debian)(Java也是32位)并且有

linux - 如何从 Windows 机器检查 Linux 文件 (.so) 是 32 位还是 64 位

为了检查特定的Windowsdll是32位还是64位,读取PEheader将产生所需的结果。但是需要查找linux文件(.so)是32位还是64位。搜索时,找到了有助于查找此信息的linuxshell脚本或命令。但是我们需要从windows环境中找到这个。在Windows操作系统上运行的任何Windows命令或代码都应该能够提供此信息。 最佳答案 最简单的方法是安装Cygwin并使用file命令:$filelibc.solibc.so:ELF64-bitLSBsharedobject,x86-64,version1(SYSV),dy

linux - 操作系统如何知道映射内存中的页面是脏的?

我的意思是直接在内存中更新数据,而不使用write()。在linux中,我认为在msync调用中指定的所有数据都已刷新。但在Windows中,FlushViewOfFile的文档说“写入脏页”,因此操作系统以某种方式知道哪些页面已更新。这是如何运作的?我们必须使用WriteFile来更新映射内存吗?如果我们在linux中使用write()是否msync只同步脏页? 最佳答案 在大多数(也许是所有)运行Linux或Windows的现代计算机上,CPU代表操作系统跟踪脏页。此信息存储在pagetable中.(例如,参见Intel®64a

c++ - 为什么我在 MinGW 中不需要标志 -lm 但在 Linux 中我明确需要它?

如果我需要使用数学库,我需要在Linux中使用GCC时添加-lm。但是在Windows上,当我在MinGW-w64中使用GCC时,我没有使用-lm并且它运行良好。我知道为什么需要链接libm的原因。但我真的不知道为什么我可以在Windows中忽略它? 最佳答案 因为在MinGW下,数学函数实际上并没有在libm中定​​义。“libm”是用作占位符的空库;数学函数实际上在MSVCRT.DLL中定义,whichMinGWusesasitsstandardlibrary.(使用系统的MSVCRT作为标准C库的有效性isdebatable。