标签: virtual-memory

了解 mac os 中的 vm_stat,如何将这些数字转换为类似于活动监视器的内容?

我正在尝试编写一个 mac os 程序来监视系统(类似于活动监视器)。我查看了 vm_stat 函数,当我运行它时,我得到了这个:

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                         438386.
Pages active:                       236438.
Pages inactive:                     113750.
Pages speculative:                   34293.
Pages wired down:                   225027.
"Translation faults":             11132566.
Pages copy-on-write:                319385.
Pages zero filled:                 6618647.
Pages reactivated:                   23071.
Pageins:                            421804.
Pageouts:                           153240.
Object cache: 14 hits of 24183 lookups (0% hit rate)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行活动监视器时,我得到了类似的信息:

Page Ins: 1.61gb (8.00kb/sec)
Page outs: 598.6 MB
Run Code Online (Sandbox Code Playgroud)

我有一个关于此的问题:为什么 vmstat 中的空闲页面如此之小(与活动监视器相比)

memory cocoa virtual-memory activity-monitor

5
推荐指数
1
解决办法
1943
查看次数

运行 java -version 时“无法为对象堆保留足够的空间”

我知道这是一个常见的问题。我想知道从哪里开始。

在 windows server 2008 上运行 java,我们有 65GB 内存,它显示 25GB 空闲。(目前有几个人正在运行进程)。

systeminfo | grep -i memory

显示:

总物理内存:65, 536 MB
可用物理内存:26,512MB
虚拟内存:最大大小 69,630 MB
虚拟内存:可用 299 MB
虚拟内存:使用中:69、331 MB。 

真的只是想知道我如何解决这个问题。

  • 我从哪里开始?
  • 使用的虚拟内存多于物理内存是什么意思,这就是 java 无法启动的原因吗?
  • java 是否要使用虚拟内存而不是物理内存?

java -version

给我:

Error occured during initialization of VM could not reserve enough space for object heap

更具体的问题:

  • 为什么JVM不想使用空闲的物理内存?
  • java -version如果不指定 Xms 参数,java 命令(如)要使用多少内存?
  • 简单地分配更多的虚拟内存是解决问题的好方法吗?

java memory virtual-memory windows-server-2008

5
推荐指数
1
解决办法
1万
查看次数

多级分页中的页表索引位数

处理器使用 36 位物理地址和 32 位虚拟地址,页框大小为 4 KB。每个页表条目大小为 4 个字节。一个三级页表用于虚拟到物理地址的转换,其中虚拟地址的使用如下:

位 30 - 31 用于索引到第一级页表
位 21 - 29 用于索引到第二级页表
位 12 - 20 用于索引到第三级页表
位 0 - 11 用作偏移量页面内

寻址一级、二级和三级页表的页表项中的下一级页表(或页框)所需的位数分别为?

这是 GATE 2008 中提出的一个问题。
我的分析: 最大页框数 =(物理地址大小)/(页面大小)= 2^36 / 2^12 = 2^24。因此,24 位就足以索引第 3 级页表中的页码。现在我们必须找出第 3 级将有多少页表。它给出了 9 位用于索引到第 3 级页表的情况。所以第 3 级有 2^9 个页表。这意味着 2^32 个虚拟空间包含在 2^9 个页表中,因此每个页表的条目 = 2^32/2^9 = 2^23。因此,l2 页表条目中需要 23 位来索引第三级页表中特定页表的条目。从 L1 页表到 L2 中有 2^9 个页表,我们需要到达这些 2^9 个页表中的任何一个。所以在 L1 中需要 9 位。

这种分析不知何故似乎不正确。我很困惑。有人可以解释这些概念吗?

paging operating-system virtual-memory

5
推荐指数
1
解决办法
6556
查看次数

对于程序的不同运行,全局变量的地址是否相同?

考虑以下代码片段

int i=10;
int main()
{
    cout<<&i;
}
Run Code Online (Sandbox Code Playgroud)

一旦为程序生成了 exe,程序不同运行的输出是否相同?假设操作系统支持虚拟内存

编辑:问题特定于存储在数据段中的全局变量。由于这是第一个全局变量,地址应该相同还是不同?

c++ virtual-memory

5
推荐指数
1
解决办法
1218
查看次数

虚拟内存的最大大小是多少?

我看到了这个问题—— “虚拟内存”和“交换空间”有什么区别?

这里提到虚拟内存 = RAM 空间 + 磁盘空间 - 进程可以使用。

那么虚拟内存的最大大小是多少?

Max(Virtual Memory) = 磁盘空间 + RAM 空间 - 操作系统空间(在 RAM 和磁盘上)?

memory ram swap virtual-memory

5
推荐指数
1
解决办法
2万
查看次数

虚拟内存如何发生段错误?

我很困惑进程在使用虚拟内存时如何可能出现段错误。据我了解,“虚拟”内存允许进程访问所有可用内存,然后将其映射到“实际”硬件内存。通过这种转换,进程怎么可能尝试访问不允许访问的内存部分?

virtual-memory segmentation-fault

5
推荐指数
1
解决办法
1723
查看次数

当条目被从 TLB 驱逐时更新页表

当条目从 TLB 中驱逐时,页表是否更新?如果是这样,为什么?页表中更新了哪些信息?我认为当被驱逐的页面干净时不需要更新页表。

类似地,在 TLB 中缓存(引入)页面时是否更新了页表?

operating-system cpu-architecture virtual-memory tlb page-tables

5
推荐指数
1
解决办法
1500
查看次数

“NSUserDefaults 同步”怎么能跑得这么快?

在我的应用程序中,我想为每个用户登录将用户设置保存在 plist 文件中,我编写了一个名为的类,该类CCUserSettings具有几乎相同的界面NSUserDefaults,它读取和写入与当前用户 ID 相关的 plist 文件。它有效,但性能不佳。每次用户来电[[CCUserSettings sharedUserSettings] synchronize],我写了NSMutableDictionary(这使用户设置)的plist文件,下面的代码显示synchronizeCCUserSettings忽略了一些琐碎的细节。

- (BOOL)synchronize {
    BOOL r = [_settings writeToFile:_filePath atomically:YES];
    return r;
}
Run Code Online (Sandbox Code Playgroud)

我想,NSUserDefaults当我们调用应该写入文件[[NSUserDefaults standardUserDefaults] synchronize],但它运行非常快,我写了一个演示测试,关键部分是下面,运行1000次[[NSUserDefaults standardUserDefaults] synchronize],并[[CCUserSettings sharedUserSettings] synchronize]在我的iPhone6,结果是0.45秒VS9.16秒。

NSDate *begin = [NSDate date];
for (NSInteger i = 0; i < 1000; ++i) {
    [[NSUserDefaults standardUserDefaults] setBool:(i%2==1) forKey:@"key"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
NSDate *end = [NSDate date];
NSLog(@"synchronize …
Run Code Online (Sandbox Code Playgroud)

mmap virtual-memory nsuserdefaults ios

5
推荐指数
1
解决办法
610
查看次数

PAGE_EXECUTE 和 PAGE_EXECUTE_READ 有什么区别?

Windows 提供了 2 个不同的内存保护常量(例如VirtualProtect的第三个参数),它们的行为似乎相似:PAGE_EXECUTEPAGE_EXECUTE_READ

它似乎PAGE_EXECUTE应该是仅执行权限(没有读取)。但是,没有读取的执行权限没有多大意义,因为 CPU 需要先从内存中读取指令,然后才能解码和执行它们。此外,我在这里读到确实PAGE_EXECUTE内存也允许从中读取。

那么.. 为什么有两个不同的常量,它们之间有什么区别?为什么我应该更喜欢一个?

windows winapi virtual-memory

5
推荐指数
0
解决办法
1345
查看次数

Keras 拟合生成器慢

Kerasfit_generator非常慢。GPU 在训练中不会经常使用,有时它的使用率会下降到 0%。即使在 4 个工人和multiproceesing=True.

此外,脚本的进程请求过多的虚拟内存并且处于 D 状态,不间断睡眠(通常为 IO)

我已经尝试了不同的组合,max_queue_size但没有奏效。

截图GPU 使用情况

进程虚拟内存和状态的屏幕截图

硬件信息 GPU = Titan XP 12Gb

数据生成器类代码

import numpy as np
import keras
import conf


class DataGenerator(keras.utils.Sequence):
    'Generates data for Keras'
    def __init__(self, list_IDs, labels, batch_size=32, dim=(conf.max_file, 128),
                 n_classes=10, shuffle=True):
        'Initialization'
        self.dim = dim
        self.batch_size = batch_size
        self.labels = labels
        self.list_IDs = list_IDs
        self.n_classes = n_classes
        self.shuffle = shuffle
        self.on_epoch_end()

    def __len__(self):
        'Denotes the number of batches …
Run Code Online (Sandbox Code Playgroud)

python gpu multiprocessing virtual-memory keras

5
推荐指数
1
解决办法
4468
查看次数