Questions tagged «memory-management»

动态分配和释放部分物理内存的过程,以响应程序请求(如果可能),请求者之间保持公平且无饥饿。

3
烫发空间与堆空间
首先,Perm空间和Heap空间之间有什么区别(JVM选择如何以及如何选择使用每个内存空间)? 其次,但最重要的是,对于标准MVC类型的Java应用程序,建议采用哪种比率?

8
Scala编译时如何防止java.lang.OutOfMemoryError:PermGen空间?
我注意到我的Scala编译器有一个奇怪的行为。编译类时,有时会抛出OutOfMemoryError。这是错误消息: [info] Compiling 1 Scala source to /Users/gruetter/Workspaces/scala/helloscala/target/scala-2.9.0/test-classes... java.lang.OutOfMemoryError: PermGen space Error during sbt execution: java.lang.OutOfMemoryError: PermGen space 它只会偶尔发生一次,并且通常不会在随后的编译运行中引发该错误。我使用Scala 2.9.0并通过SBT进行编译。 是否有人知道导致此错误的原因?预先感谢您的见解。

11
是否可以调试“由于内存错误而终止”?
在我的应用程序运行的某个(一致)时刻,我始终收到xcode错误消息 由于内存错误而终止。 我找不到导致错误的代码,但是可以告诉错误附近的代码(使用断点)。 该错误是在我实现中返回某个单元格后直接导致的 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath UITableViewDataSource委托方法。我可以确认它返回的是有效的UITableViewCell,但我认为解释并发布整个方法将浪费您的时间。但是,我怀疑这可能是由于快速大量分配内存引起的。 它肯定说Terminated due to memory error,不是内存压力。 我想知道消息的真正含义。另外,有什么方法可以调试此消息?没有崩溃报告生成。 我正在使用ARC和iOS 7。

4
运算符new将内存初始化为零
有这样的代码: #include <iostream> int main(){ unsigned int* wsk2 = new unsigned int(5); std::cout << "wsk2: " << wsk2 << " " << *wsk2 << std::endl; delete wsk2; wsk2 = new unsigned int; std::cout << "wsk2: " << wsk2 << " " << *wsk2 << std::endl; return 0; } 结果: wsk2: …

4
L1和L2缓存的行大小
从该论坛上的上一个问题中,我了解到,在大多数内存系统中,L1缓存是L2缓存的子集,这意味着从L2删除的所有条目也将从L1删除。 所以现在我的问题是我如何确定L1缓存中对应于L2缓存中的条目的条目。L2条目中存储的唯一信息是标签信息。基于此标签信息,如果L1和L2缓存的行大小不同,则如果我重新创建addr,它可能会跨越L1缓存中的多行。 该体系结构是否真的要对两条线进行刷新,还是只是将L1和L2高速缓存保持为相同的线大小? 我知道这是一项政策决定,但我想知道常用的技术。


24
“内存不足”是否是可恢复的错误?
我已经进行了很长时间的编程,并且看到的程序在内存不足时会尝试清理并退出,即正常失败。我不记得上一次看到一个实际尝试恢复并继续正常运行的情况了。 如此多的处理取决于能否成功分配内存,尤其是在垃圾回收语言中,似乎内存不足错误应归类为不可恢复。(不可恢复的错误包括堆栈溢出之类的东西。) 使它成为可恢复的错误的有力论据是什么?

14
Python对象删除自身
为什么不起作用?我试图使一个类的实例本身删除。 >>> class A(): def kill(self): del self >>> a = A() >>> a.kill() >>> a <__main__.A instance at 0x01F23170>

6
Node.js(和Chrome V8)中的内存限制
在网络上的许多地方,您都会看到: 节点进程的内存限制是多少? 和答案: 当前,默认情况下,V8在32位系统上的内存限制为512mb,在64位系统上的内存限制为1gb。可以通过将--max-old-space-size设置为最大〜1gb(32位)和〜1.7gb(64位)来提高此限制,但是建议您将单个进程拆分为多个工作进程如果达到内存限制。 有人可以确认是这种情况吗,因为Node.js似乎经常更新? 更重要的是,在不久的将来会发生这种情况吗? 我想编写JavaScript代码,该代码可能必须处理4gb的javascript对象(并且速度可能不是问题)。 如果无法在Node中执行此操作,最终我将在Java(在64位计算机上)执行操作,但我宁愿不这样做。



1
字符串文字池是对字符串对象的引用集合,还是对象的集合
阅读了SCJP提示行作者Corey McGlone在javaranch网站上的文章后,我都感到困惑。从字面上看是Strings,由Kathy Sierra(javaranch的联合创始人)和Bert Bates共同编写的《 SCJP Java 6程序员指南》。 我将尝试引用Corey先生和Kathy Sierra女士对String Literal Pool的引用。 1.根据科里·麦格隆先生的说法: 字符串文字池是指向字符串对象的引用的集合。 String s = "Hello"; (假设"Hello"堆上没有名为“ Hello”的对象),将在堆上创建一个String对象,并将对该对象的引用放入String Literal Pool(常量表)中。 String a = new String("Bye");(假定堆上没有名为“ Bye”new的对象,操作员将要求JVM在堆上创建一个对象。 现在,在本文中"new",有关创建字符串及其引用的运算符的说明 有些混乱,因此,下面将介绍本文本身的代码和说明。 public class ImmutableStrings { public static void main(String[] args) { String one = "someString"; String two = new String("someString"); System.out.println(one.equals(two)); System.out.println(one …


7
如何强制JavaScript深度复制字符串?
我有一些如下的javascript代码: var myClass = { ids: {} myFunc: function(huge_string) { var id = huge_string.substr(0,2); ids[id] = true; } } 稍后,该函数将使用一些大字符串(100 MB +)进行调用。我只想保存在每个字符串中找到的简短ID。但是,谷歌浏览器的子字符串函数(实际上是我的代码中的正则表达式)仅返回引用原始字符串的“切片字符串”对象。因此,在对进行一系列调用之后myFunc,我的chrome标签页内存不足,因为临时huge_string对象无法进行垃圾回收。 如何复制字符串,id以便huge_string不维护对的引用,并且huge_string可以对垃圾进行垃圾回收?

8
为什么不能修剪数组?
在MSDN文档站点上,该Array.Resize方法说明如下: 如果newSize大于旧数组的Length,则分配一个新数组,并将所有元素从旧数组复制到新数组。 如果newSize小于旧数组的长度,则分配一个新数组,并将元素从旧数组复制到新数组,直到填充新数组为止。旧数组中的其余元素将被忽略。 数组是一系列相邻的存储块。如果我们需要更大的数组,我知道我们无法向其添加内存,因为它旁边的内存可能已经被其他一些数据占用。因此,我们必须声明一个新的相邻存储块序列,并具有所需的更大大小,然后在其中复制条目并删除对旧空间的声明。 但是,为什么要创建一个较小的新数组?为什么阵列不能仅仅删除其对最后一个存储块的要求?那么它将是O(1)运算,而不是现在的O(n)。 它与在计算机体系结构或物理级别上如何组织数据有关吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.