memory-management相关内容
从 Java SE 6 开始,Sun 的 JVM 的默认最大堆大小是多少(即相当于设置 -Xmx)? 看起来像带有服务器级机器的 Java SE 5,是 小于物理内存的 1/4 或 1GB. 奖励问题:对于 IBM 的 JVM,您可以问它 java -verbose:sizes -version 你能同样问一下 Sun 的 JVM 吗? 编辑: 我使用 Runti
..
请解释Xms 和Xmx 参数在JVM 中的使用.它们的默认值是什么? 解决方案 标志 Xmx 指定 Java 虚拟机 (JVM) 的最大内存分配池,而 Xms 指定初始内存分配池. 这意味着您的 JVM 将以 Xms 内存量启动,并且能够使用最大 Xmx 内存量.例如,像下面这样启动 JVM 将使用 256 MB 内存启动它,并允许进程使用最多 2048 MB 内存: java -
..
应用: 由顶部的文本框和下方的列表框组成的 WPF 应用程序 用户在TextBox中输入字符串查找员工,搜索结果显示在ListBox中 ListBox 使用 DataTemplates 来显示元素(显示员工姓名、部门、电话和缩略图.) 实施: 在应用程序启动时,我查询数据库并检索所有员工和相关信息以显示在 ListBox 中.这会一直保存在内存中. 应用程序启动后,所有
..
列表list = new ArrayList();for (int i = 0; i 上例中,调用string.intern()方法后,堆(sb.toString)中创建的1000个对象什么时候会被清空? 编辑 1:如果不能保证这些对象可以被清除.假设 GC 没有运行,使用 string.intern() 本身是否已经过时?(就内存使用而言?) 在使用 intern() 方法时,有
..
据我了解: 次要 GC 发生在年轻一代的 GC 通常称为 Minor,因为它需要 更少 时间来完成,因为 live-set 通常很小(我说的是典型的 Java 应用程序,考虑到弱世代假设)和一个复制收集器,需要重新定位和重新映射的对象数量较少. 主要 GC 发生在老一代的 GC 通常称为 Major GC,因为它需要 更多 时间来完成,因为 live-set 大部分都很大(
..
..
我有一个 Python2.7 应用程序,它使用了很多 dict 对象,这些对象主要包含键和值的字符串. 有时不再需要这些字典和字符串,我想将它们从内存中删除. 我尝试了不同的东西,del dict[key]、del dict 等.但是应用程序仍然使用相同的内存量. 下面是一个我希望为内存付费的示例.但它没有:( 导入 gc导入资源定义内存():print('内存使用:% 2.2
..
我目前正在开发一个网站,该网站大量使用缓存数据来避免往返.在启动时,我们得到一个“大"图(数百个不同种类的对象).这些对象通过 WCF 检索并反序列化(我们使用协议缓冲区进行序列化)我正在使用 redgate 的内存分析器来调试内存问题(内存似乎不适合我们“在"完成初始化并最终得到此报告后需要多少内存 现在我们可以从这份报告中收集到的是: 1) .NET 分配的大部分内存都是免费的(它
..
JDK 提供了分配所谓的直接 ByteBuffers 的能力,其中内存在 Java 堆之外分配.这可能是有益的,因为垃圾收集器不会触及此内存,因此不会增加 GC 开销:这对于缓存等长寿命事物的属性非常有用. 然而,现有实现存在一个关键问题:只有在对拥有的 ByteBuffer 进行垃圾回收时才异步分配底层内存;没有办法强制提前释放.这可能会产生问题,因为 GC 周期本身不受 ByteBuff
..
我有一些看起来像这样的 javascript 代码: var myClass = {编号:{}myFunc:函数(巨大字符串){var id = huge_string.substr(0,2);ids[id] = 真;}} 稍后,该函数被一些大字符串 (100 MB+) 调用.我只想保存在每个字符串中找到的短 id.但是,谷歌浏览器的子字符串函数(实际上是我的代码中的正则表达式)只返回一个“切
..
我能否从命令行检查正在运行的 JVM 的堆使用情况,我指的是实际使用情况,而不是 Xmx 分配的最大数量. 我需要它是命令行,因为我无法访问窗口环境,并且我想要基于值的脚本,应用程序在 Jetty 应用程序服务器中运行 解决方案 可以使用jstat,比如: jstat -gc pid 这里有完整的文档:http://docs.oracle.com/javase/7/docs/t
..
我正在使用 util 模块和 heapUsed 值保持在 30-100MB 左右,heapTotal 值增长到 1.4GB. 这是一个关于类似行为的问题 我了解到这是 v8 垃圾收集器的行为方式,但问题是如果在 512 MB 设备上运行,如何减少它分配的内存量(使其小于 1.4GB) 解决方案 您需要控制最大内存大小标志(所有大小均以 MB 为单位). 建议的“内存不足"
..
我们在 node.js 上运行一个 XMPP 服务器,在一台大约 3.8 GB RAM 的机器上.以下是我们在调用 node 时传递的命令行参数:/opt/node/bin/node --max-old-space-size=3000 --trace-gc --trace-gc-verbose main.js 但是,我们经常需要在进程中看到超过 10 秒的 gc 暂停(有时超过 1 分钟的
..
如果我理解正确,.net 运行时将始终在我之后清理.因此,如果我创建新对象并停止在代码中引用它们,运行时将清理这些对象并释放它们占用的内存. 既然是这种情况,为什么有些对象需要有析构函数或处置方法呢?当它们不再被引用时,运行时不会在它们之后清理吗? 解决方案 需要终结器来保证将稀缺资源释放回系统,如文件句柄、套接字、内核对象等.由于终结器总是在最后运行在对象生命中,它是释放这些句柄的
..
在寻找 JavaScript 库(铆钉)中的性能问题时,我发现垃圾收集在一次运行中发生了 3 到 4 次,占用了大约 15% 的执行时间(使用 Chrome DevTools JS Profile). 由于垃圾回收的原因,至少有 30 个地方创建了临时函数/对象作为潜在候选对象. 我想知道是否有办法找到负责分配被垃圾回收的内存的函数,这样我就可以专注于我的性能调整. 我记录了堆分
..
我在 Solaris 上支持一些 c 代码,而且我看到了一些奇怪的东西,至少我认为是这样的: char new_login[64];...strcpy(new_login, (char *)login);...免费(新登录); 我的理解是,由于变量是一个本地数组,内存来自堆栈,不需要被释放,而且由于没有使用 malloc/calloc/realloc,所以行为是未定义的. 这是一个实时系
..
我知道 JavaScript 有一个垃圾收集器.因此,使用delete只删除一个对该对象的引用,当没有对该对象的引用时,它被GC删除. JavaScript 很棘手,由于闭包、模糊的命名空间和原型继承,知道什么时候到现在或为什么并不总是很明显. 我正在编写一个相当大的 JavaScript 项目,并希望避免内存泄漏,同时限制全局内存使用.我根本不在优化阶段(让我们先让这些东西工作:-)
..
70.222: [GC [PSYoungGen: 131072K->15437K(152896K)] 131072K->15509K(502464K), 0.0228420 secs] [Times: user=0.09 sys=0.01, real=0.02 secs] 解决方案 您可以找到解释详细 GC 输出的教程,例如.在: verbosegc 输出教程 - Java 7 堆
..
我需要存储一个语言代码字符串,例如“en",它总是包含 2 个字符. 将类型定义为“String"还是“Char"更好? 私有字符串语言代码; 对 private char[] 语言代码; 或者还有其他更好的选择吗? 这 2 个如何存储在内存中?分配值时将分配多少字节或位? 解决方案 它们是如何存储的 string 和 char[] 都存储在堆上 - 所以存储是相
..
设置 .NET 为每一代的堆(0、1、2、LOH)分段分配内存以获得连续的内存块,在启动时以及在收集后尝试满足分配请求时. 为每个堆分配的内存可能会随着应用程序“热身"而趋于平稳,除了可能用于第 2 代和大型对象堆.在垃圾回收期间,每个堆 (0, 1, 2) 都会被清扫和压缩,但大对象堆 (LOH) 除外,它只是被清扫. 我理解集合的“扫描"部分意味着 GC 识别哪些对象不再是根
..