Tag: 内存

如何在App Store批准的应用程序中获取有关可用内存和运行进程的信息? (是的,有一个!)

App Store中有一个名为“Activity Monitor Touch”的应用程序,它显示后台进程以及可用内存。 所以必须有一个公共API来访问这些信息。 证据: 我已经在寻找天,但找不到任何好的起点。 这个应用程序如何能够把所有这些东西都拿出来,而不会有任何越狱/黑客攻击等等。 直到最近,我确信在iOS上这样的事情是绝对不可能的。 我发现这个代码片段: – (NSArray *)runningProcesses { int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0}; size_t miblen = 4; size_t size; int st = sysctl(mib, miblen, NULL, &size, NULL, 0); struct kinfo_proc * process = NULL; struct kinfo_proc * newprocess = NULL; do { size += size / 10; […]

Python:减less字典的内存使用

我试图加载一些文件到内存中。 这些文件有以下三种格式之一: stringTAB int stringTAB浮动 int TAB float。 事实上,他们是ngram静态文件,以防万一这有助于解决scheme。 例如: i_love TAB 10 love_you TAB 12 目前,我正在做的伪代码是 loadData(file): data = {} for line in file: first, second = line.split('\t') data[first] = int(second) #or float(second) return data 令我惊讶的是,虽然磁盘中的文件总大小约为21 MB,但在装入内存时,这个过程需要120 – 180 MB的内存! (整个python应用程序不会将任何其他数据加载到内存中)。 目前只有不到10个文件,其中大部分文件保持稳定,大约在5万到8万行,除了一个文件目前有数百万行。 所以我想问一个技术/数据结构来减less内存消耗: 任何压缩技术的build议? 如果我仍然使用字典,有什么办法来减less内存? 是否有可能像Java中的Python字典中设置“加载因子”? 如果你有其他一些数据结构,“也愿意交易一些速度来减less内存。 不过,这是一个时间敏感的应用程序,所以一旦用户input他们的查询,我认为花费超过几秒的时间来返回结果是不合理的。 关于这一点,我仍然对谷歌如何快速完成谷歌翻译感到惊讶:他们必须使用大量的技术和大量的服务器function。 非常感谢你。 我期待你的build议。

你可以分配一个非常大的内存单元(> 4GB)在C或C + +?

现在有了大量内存,我想知道,有可能分配一个大于4GB的内存块吗? 或者我需要分配一堆小块,并处理它们之间的切换? 为什么??? 我正在处理一些openstreetmap XML数据,这些文件是巨大的。 我目前正在将它们stream入,因为我无法将它们全部加载到一个块中,但我只是对malloc或new的上限感到好奇。

Linux中的直接内存访问

我试图直接访问一个embedded式Linux项目的物理内存,但我不知道如何才能最好地指定我的使用内存。 如果我经常启动我的设备,并访问/ dev / mem,我可以轻松地读取和写入任何我想要的地方。 但是,在这里,我访问的内存可以很容易地分配给任何进程; 我不想这样做 我的/ dev / mem的代码是(所有的错误检查,等删除): mem_fd = open("/dev/mem", O_RDWR)); mem_p = malloc(SIZE + (PAGE_SIZE – 1)); if ((unsigned long) mem_p % PAGE_SIZE) { mem_p += PAGE_SIZE – ((unsigned long) mem_p % PAGE_SIZE); } mem_p = (unsigned char *) mmap(mem_p, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, mem_fd, BASE_ADDRESS); 这工作。 […]

Docker容器和内存消耗

假设我启动了大量基于同一个泊坞窗图像的docker集装箱。 这意味着每个docker集装箱正在运行相同的应用程序。 可能是应用程序足够大,需要大量的硬盘驱动器内存。 docker如何处理它? 是否所有的docker容器共享docker图像中定义的静态部分? 如果不是,将应用程序复制到用于运行docker容器的计算机上的某个目录中,并为每个docker容器安装此app目录是否有意义?

如何获得可用系统内存的大小?

是否有可能在C#.NET中获得系统可用内存的大小? 如果是的话如何?

如何从.NET中的stream获取MemoryStream?

我有以下构造函数方法,从文件path打开一个MemoryStream : MemoryStream _ms; public MyClass(string filePath) { byte[] docBytes = File.ReadAllBytes(filePath); _ms = new MemoryStream(); _ms.Write(docBytes, 0, docBytes.Length); } 我需要改变这个接受一个Stream而不是一个文件path。 什么是从Stream对象获取MemoryStream的最简单/最有效的方法?

为什么(Sun)JVM具有固定的内存使用上限(-Xmx)?

本着Java的精神:为什么MaxPermSize存在? ,我想问问为什么Sun JVM使用内存分配池的大小的固定上限。 默认是你的物理RAM的1/4(有上限和下限); 因此,如果您的应用程序需要内存,您必须手动更改限制(参数-Xmx),否则您的应用程序将执行得很差,甚至可能会因为OutOfMemoryError而崩溃。 为什么这个固定的限制甚至存在? 为什么JVM不能根据需要分配内存,就像本地程序在大多数操作系统上一样? 这将解决Java软件的一整套常见问题(只要谷歌,看网上有多less提示,通过设置-Xmx来解决问题)。 编辑: 有些答案指出,这将保护系统的其他部分免受Java程序的内存泄漏; 没有限制,这会耗尽所有内存,从而降低整个系统的性能。 但是,对于其他程序也是如此,现代操作系统已经允许您限制程序的最大内存(Linux ulimit,Windows“Job Objects”)。 所以这并没有真正回答这个问题,即“为什么JVM与大多数其他程序/运行时环境不一样?”。

JavaScript内存限制

JavaScript应用程序可以存储的最大数据量是多less? 我想这是由浏览器处理,每一个都有其局限性? 如果没有限制,是否会创build页面文件? 如果是这样,那不是不安全吗?

PermGen与电梯和docker的问题

我正在开发标准的升降平台(maven和jetty)。 我反复(每隔几天一次)得到这个: Exception in thread "7048009@qtp-3179125-12" java.lang.OutOfMemoryError: PermGen space 2009-09-15 19:41:38.629::WARN: handle failed java.lang.OutOfMemoryError: PermGen space 这是在我的开发环境。 这不是问题,因为我可以继续重新启动服务器。 在部署我没有这些问题,所以这不是一个真正的问题。 我只是好奇。 我不太了解JVM。 我认为我认为永久的一代记忆是用于类和string的东西是正确的? 我记得有点与.NET内存模型混淆了… 为什么会发生这种情况? 默认值是疯狂的低? 它是否与所有的Scala必须为函数对象和类似的FP事物创build的辅助对象? 每次我用新编写的代码(每隔几分钟)就重新启动Jetty,我想它会重新加载类。但是即使如此,它不能成为那么多吗? JVM不能够处理大量的类吗? 干杯 乔