Questions tagged «heap-memory»

堆是为动态分配预留的进程内存。



19
如何处理“ java.lang.OutOfMemoryError:Java堆空间”错误?
我正在Java 5上编写客户端Swing应用程序(图形字体设计器)。最近,我遇到了错误,因为我对内存的使用并不保守。用户可以打开无限数量的文件,并且程序将打开的对象保留在内存中。经过快速研究,我在5.0 Java虚拟机中发现了人机工程学,其他人则说在Windows计算机上,JVM默认将最大堆大小设置为。java.lang.OutOfMemoryError: Java heap space64MB 在这种情况下,我应该如何处理这种限制? 我可以使用java的命令行选项来增加最大堆大小,但这需要找出可用的RAM并编写一些启动程序或脚本。此外,增加到某个有限的最大值并不能最终解决这个问题。 我可以重写一些代码以将对象频繁地持久保存到文件系统(使用数据库是同一回事)以释放内存。它可以工作,但是可能也很多。 如果您可以将上述想法的细节或诸如自动虚拟内存,动态扩展堆大小之类的替代方法的细节介绍给我,那将会很棒。


12
增加Java中的堆大小
我正在使用具有8 GB RAM的Windows 2003服务器(64位)。如何增加堆内存的最大值?我正在使用该-Xmx1500m标志将堆大小增加到1500 Mb。是否可以将堆内存增加到物理内存(6 GB堆)的75%?
276 java  heap-memory 

22
Node.js堆内存不足
今天,我运行了用于文件系统索引编制的脚本,以刷新RAID文件索引,并且4小时后它崩溃并出现以下错误: [md5:] 241613/241627 97.5% [md5:] 241614/241627 97.5% [md5:] 241625/241627 98.1% Creating missing list... (79570 files missing) Creating new files list... (241627 new files) <--- Last few GCs ---> 11629672 ms: Mark-sweep 1174.6 (1426.5) -> 1172.4 (1418.3) MB, 659.9 / 0 ms [allocation failure] [GC in old space requested]. 11630371 ms: …


5
Go中结构的堆栈与堆分配,以及它们与垃圾回收的关系
我是Go的新手,在C风格的基于堆栈的编程(其中自动变量位于堆栈上,分配的内存位于堆中)与Python风格的基于堆栈的编程(在其中唯一存在于堆栈中的东西是对堆上对象的引用/指针。 据我所知,以下两个函数给出的输出相同: func myFunction() (*MyStructType, error) { var chunk *MyStructType = new(HeaderChunk) ... return chunk, nil } func myFunction() (*MyStructType, error) { var chunk MyStructType ... return &chunk, nil } 即分配一个新的结构并返回它。 如果用C编写,第一个将对象放到堆上,第二个将对象放到堆栈上。第一个将返回指向堆的指针,第二个将返回指向堆栈的指针,该指针将在函数返回时消失,这将是一件坏事。 如果我用Python(或C#以外的许多其他现代语言)编写它,则示例2不可能实现。 我知道Go垃圾收集了两个值,因此上述两种形式都可以。 报价: 注意,与C语言不同,完全可以返回局部变量的地址。函数返回后,与变量关联的存储将保留。实际上,采用复合文字的地址会在每次对其求值时分配一个新实例,因此我们可以将后两行结合在一起。 http://golang.org/doc/effective_go.html#functions 但这引起了两个问题。 1-在示例1中,该结构在堆上声明。例子2呢?是在栈中声明的方式是否与在C中声明的方式相同,还是在堆上进行声明? 2-如果在堆栈上声明了示例2,则函数返回后如何保持可用状态? 3-如果实际上在堆上声明了示例2,那么如何通过值而不是通过引用传递结构?在这种情况下指针的意义是什么?

23
释放后将变量设置为NULL
在我公司中,有一条编码规则说,释放所有内存后,将变量重置为NULL。例如 ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } 我觉得,在如上所示代码的情况下,设置为NULL没有任何意义。还是我错过了什么? 如果在这种情况下没有意义,我将与“质量团队”一起解决,以删除此编码规则。请指教。


11
java.lang.OutOfMemoryError:Java堆空间
我在执行多线程程序时遇到以下错误 java.lang.OutOfMemoryError: Java heap space 上面的错误发生在其中一个线程中。 据我所知,堆空间仅由实例变量占用。如果这是正确的,那么为什么在运行一段时间后会出现此错误,因为在创建对象时分配了实例变量的空间。 有什么办法可以增加堆空间? 我应该对程序进行哪些更改,以便它将占用更少的堆空间?

8
G1上的Java 7(JDK 7)垃圾收集和文档
Java 7已经出现了一段时间,但是我在垃圾收集器(尤其是新的G1收集器)的配置上找不到任何好的资源。 我的问题: G1是Java 7中的默认收集器吗?如果不是,我如何激活G1? g1在Java7中有哪些可选设置? 是否对其他收集器(例如cms或Java 7中的并行收集器)进行了更改? 在哪里可以找到有关Java 7中垃圾回收的良好文档?


10
去GC还是不去GC
我最近看了两个非常有趣且具有教育意义的语言讲座: Herb Sutter撰写的第一篇文章介绍了C ++ 0x的所有出色功能,凉爽的功能,为什么C ++的未来似乎比以往更加光明,以及M $在这场比赛中如何被称为好人。讨论围绕效率以及如何经常减少堆活动来提高性能。 另一位由Andrei Alexandrescu创作,激发了从C / C ++到他的新游戏改变者D的过渡。D的大多数工作似乎都动机和设计都很好。但是,令我感到惊讶的是,D推动了垃圾回收,并且所有类都是仅通过引用创建的。更令人困惑的是,《 D编程语言参考手册》一书在有关资源管理的章节中特别 指出以下内容: 垃圾回收消除了C和C ++中必需的繁琐且易于出错的内存分配跟踪代码。这不仅意味着更快的开发时间和更低的维护成本,而且生成的程序经常运行得更快! 这与Sutter关于减少堆活动的不断讨论相矛盾。我非常尊重Sutter和Alexandrescou的见解,因此我对这两个关键问题感到困惑 并非仅通过引用创建类实例会导致大量不必要的堆活动吗? 在哪些情况下可以使用垃圾回收而不牺牲运行时性能?

5
JVM如何确保System.identityHashCode()永远不会改变?
通常,默认实现Object.hashCode()是内存中对象分配地址的某些功能(尽管JLS并未强制执行此功能)。既然VM会在内存中绕开对象,为什么System.identityHashCode()在对象的生存期内,返回的值从不改变? 如果这是一次“一次性”计算(对象的hashCode计算一次,并存放在对象标题或其他内容中),那么这是否意味着两个对象可能具有相同的对象identityHashCode(如果它们恰好是第一次分配给对象)内存中的相同地址)?
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.