memory-management相关内容

启动JVM时-Xms和-Xmx参数是什么?

请解释Xms 和Xmx 参数在JVM 中的使用.它们的默认值是什么? 解决方案 标志 Xmx 指定 Java 虚拟机 (JVM) 的最大内存分配池,而 Xms 指定初始内存分配池. 这意味着您的 JVM 将以 Xms 内存量启动,并且能够使用最大 Xmx 内存量.例如,像下面这样启动 JVM 将使用 256 MB 内存启动它,并允许进程使用最多 2048 MB 内存: java - ..
发布时间:2022-01-16 11:40:02 Java开发

WPF 内存使用情况

应用: 由顶部的文本框和下方的列表框组成的 WPF 应用程序 用户在TextBox中输入字符串查找员工,搜索结果显示在ListBox中 ListBox 使用 DataTemplates 来显示元素(显示员工姓名、部门、​​电话和缩略图.) 实施: 在应用程序启动时,我查询数据库并检索所有员工和相关信息以显示在 ListBox 中.这会一直保存在内存中. 应用程序启动后,所有 ..
发布时间:2022-01-16 11:27:14 其他开发

调用 intern() 方法后,内存中的 new String() 对象何时被清除

列表list = new ArrayList();for (int i = 0; i 上例中,调用string.intern()方法后,堆(sb.toString)中创建的1000个对象什么时候会被清空? 编辑 1:如果不能保证这些对象可以被清除.假设 GC 没有运行,使用 string.intern() 本身是否已经过时?(就内存使用而言?) 在使用 intern() 方法时,有 ..

什么时候触发 Full GC?

据我了解: 次要 GC 发生在年轻一代的 GC 通常称为 Minor,因为它需要 更少 时间来完成,因为 live-set 通常很小(我说的是典型的 Java 应用程序,考虑到弱世代假设)和一个复制收集器,需要重新定位和重新映射的对象数量较少. 主要 GC 发生在老一代的 GC 通常称为 Major GC,因为它需要 更多 时间来完成,因为 live-set 大部分都很大( ..
发布时间:2022-01-16 10:22:32 Java开发

在 Python 中强制垃圾收集以释放内存

我有一个 Python2.7 应用程序,它使用了很多 dict 对象,这些对象主要包含键和值的字符串. 有时不再需要这些字典和字符串,我想将它们从内存中删除. 我尝试了不同的东西,del dict[key]、del dict 等.但是应用程序仍然使用相同的内存量. 下面是一个我希望为内存付费的示例.但它没有:( 导入 gc导入资源定义内存():print('内存使用:% 2.2 ..
发布时间:2022-01-16 10:18:13 Python

.NET 可用内存使用情况(如何防止过度分配/释放内存给操作系统)

我目前正在开发一个网站,该网站大量使用缓存数据来避免往返.在启动时,我们得到一个“大"图(数百个不同种类的对象).这些对象通过 WCF 检索并反序列化(我们使用协议缓冲区进行序列化)我正在使用 redgate 的内存分析器来调试内存问题(内存似乎不适合我们“在"完成初始化并最终得到此报告后需要多少内存 现在我们可以从这份报告中收集到的是: 1) .NET 分配的大部分内存都是免费的(它 ..
发布时间:2022-01-16 10:18:07 C#/.NET

使用 sun.misc.Unsafe? 强制释放直接 ByteBuffer 已分配的本机内存的示例

JDK 提供了分配所谓的直接 ByteBuffers 的能力,其中内存在 Java 堆之外分配.这可能是有益的,因为垃圾收集器不会触及此内存,因此不会增加 GC 开销:这对于缓存等长寿命事物的属性非常有用. 然而,现有实现存在一个关键问题:只有在对拥有的 ByteBuffer 进行垃圾回收时才异步分配底层内存;没有办法强制提前释放.这可能会产生问题,因为 GC 周期本身不受 ByteBuff ..
发布时间:2022-01-16 10:17:18 Java开发

如何强制 JavaScript 深度复制字符串?

我有一些看起来像这样的 javascript 代码: var myClass = {编号:{}myFunc:函数(巨大字符串){var id = huge_string.substr(0,2);ids[id] = 真;}} 稍后,该函数被一些大字符串 (100 MB+) 调用.我只想保存在每个字符串中找到的短 id.但是,谷歌浏览器的子字符串函数(实际上是我的代码中的正则表达式)只返回一个“切 ..

如何从命令行检查正在运行的 JVM 的堆使用情况?

我能否从命令行检查正在运行的 JVM 的堆使用情况,我指的是实际使用情况,而不是 Xmx 分配的最大数量. 我需要它是命令行,因为我无法访问窗口环境,并且我想要基于值的脚本,应用程序在 Jetty 应用程序服务器中运行 解决方案 可以使用jstat,比如: jstat -gc pid 这里有完整的文档:http://docs.oracle.com/javase/7/docs/t ..
发布时间:2022-01-16 10:14:59 Java开发

nodejs 减少 v8 垃圾收集器的内存使用量

我正在使用 util 模块和 heapUsed 值保持在 30-100MB 左右,heapTotal 值增长到 1.4GB. 这是一个关于类似行为的问题 我了解到这是 v8 垃圾收集器的行为方式,但问题是如果在 512 MB 设备上运行,如何减少它分配的内存量(使其小于 1.4GB) 解决方案 您需要控制最大内存大小标志(所有大小均以 MB 为单位). 建议的“内存不足" ..
发布时间:2022-01-16 10:02:05 其他开发

既然 .NET 有一个垃圾收集器,为什么我们需要终结器/析构器/dispose-pattern?

如果我理解正确,.net 运行时将始终在我之后清理.因此,如果我创建新对象并停止在代码中引用它们,运行时将清理这些对象并释放它们占用的内存. 既然是这种情况,为什么有些对象需要有析构函数或处置方法呢?当它们不再被引用时,运行时不会在它们之后清理吗? 解决方案 需要终结器来保证将稀缺资源释放回系统,如文件句柄、套接字、内核对象等.由于终结器总是在最后运行在对象生命中,它是释放这些句柄的 ..
发布时间:2022-01-16 09:58:43 C#/.NET

如何检测在 JavaScript 中触发垃圾收集的内存分配?

在寻找 JavaScript 库(铆钉)中的性能问题时,我发现垃圾收集在一次运行中发生了 3 到 4 次,占用了大约 15% 的执行时间(使用 Chrome DevTools JS Profile). 由于垃圾回收的原因,至少有 30 个地方创建了临时函数/对象作为潜在候选对象. 我想知道是否有办法找到负责分配被垃圾回收的内存的函数,这样我就可以专注于我的性能调整. 我记录了堆分 ..

堆栈内存上的 free()

我在 Solaris 上支持一些 c 代码,而且我看到了一些奇怪的东西,至少我认为是这样的: char new_login[64];...strcpy(new_login, (char *)login);...免费(新登录); 我的理解是,由于变量是一个本地数组,内存来自堆栈,不需要被释放,而且由于没有使用 malloc/calloc/realloc,所以行为是未定义的. 这是一个实时系 ..
发布时间:2022-01-16 09:57:38 其他开发

JavaScript 内存管理的陷阱?

我知道 JavaScript 有一个垃圾收集器.因此,使用delete只删除一个对该对象的引用,当没有对该对象的引用时,它被GC删除. JavaScript 很棘手,由于闭包、模糊的命名空间和原型继承,知道什么时候到现在或为什么并不总是很明显. 我正在编写一个相当大的 JavaScript 项目,并希望避免内存泄漏,同时限制全局内存使用.我根本不在优化阶段(让我们先让这些东西工作:-) ..
发布时间:2022-01-16 09:53:21 前端开发

String 和 Char 类型如何存储在 .NET 的内存中?

我需要存储一个语言代码字符串,例如“en",它总是包含 2 个字符. 将类型定义为“String"还是“Char"更好? 私有字符串语言代码; 对 private char[] 语言代码; 或者还有其他更好的选择吗? 这 2 个如何存储在内存中?分配值时将分配多少字节或位? 解决方案 它们是如何存储的 string 和 char[] 都存储在堆上 - 所以存储是相 ..
发布时间:2022-01-16 09:44:54 C#/.NET

由 .NET 进程分配的内存何时释放回 Windows

设置 .NET 为每一代的堆(0、1、2、LOH)分段分配内存以获得连续的内存块,在启动时以及在收集后尝试满足分配请求时. 为每个堆分配的内存可能会随着应用程序“热身"而趋于平稳,除了可能用于第 2 代和大型对象堆.在垃圾回收期间,每个堆 (0, 1, 2) 都会被清扫和压缩,但大对象堆 (LOH) 除外,它只是被清扫. 我理解集合的“扫描"部分意味着 GC 识别哪些对象不再是根 ..
发布时间:2022-01-16 09:43:49 C#/.NET