garbage-collection相关内容

如何知道使用jmx的Java堆中每一代的大小?

jmap可以知道每一代的大小,但我希望实时监视我的Java进程。 使用jmx,MemoryMXBean.getHeapMemoryUsage().getUsed()可以获得总的堆大小。但我找不到任何方法来获取: 新(年轻)和终身(老)世代人数; 伊甸园的大小和新一代的每一个幸存者。 推荐答案 您可以使用ManagementFactory.getMemoryPoolMXBe ..
发布时间:2022-09-21 13:29:09 其他开发

收集实时GC指标-Golang

Go中有没有一种简单的方法来获取有关GC和堆大小的信息,以便将它们暴露在监视仪表板中。我看了一下运行时包,但似乎没有任何东西可以做到这一点。理想情况下,这应该不需要任何开销,如在分析模式下运行应用程序等,但应该为生产做好准备。 推荐答案 您可以使用GODEBUG=gctrace=1获得连续输出,runtime package中介绍了这一点。 否则,您需要从runtime.MemS ..
发布时间:2022-09-21 12:15:19 其他开发

JS闭包上下文对象的寿命?

背景 我正在尝试将灵丹妙药的参与者模型语言原语移植到JS中。我想出了一个解决方案(在JS中)来模拟receiveelxir关键字,使用";Receiver&Quot;函数和生成器。 这里是一个简化的实现和演示,向您展示这一想法。 接口: type ActorRef: { send(msg: any): void } type Receiver = (msg: any ..
发布时间:2022-06-15 12:54:27 前端开发

当使用new关键字进行分配时,当内存不足时,CLR是否会通过睡眠语句进行限制?

我在堆栈溢出上遇到this answer此处: 当您分配的速度快于垃圾收集速度时,您将遇到OOM。如果您执行大量分配,CLR将插入睡眠(Xx)来限制分配,但在极端情况下这是不够的。 所以,我还没有读到任何关于CLR通过在内存不足时插入一条睡眠语句来减慢分配速度来限制分配的内容。有谁能证实这是真的还是假的?如果这是真的,那么有什么文件谈到了细节吗?我试过在谷歌上搜索,但找不到任何支持这一 ..
发布时间:2022-06-11 22:21:21 C#/.NET

.NetFramework4.8和.Net 5之间的垃圾收集行为差异

为了在经常发生内存泄漏的地方检测潜在的内存泄漏,我使用了构建如下所示的测试。主要思想是拥有一个实例,而不再引用它,并让垃圾收集器收集它。我不想把重点放在这是不是一种好的技术上(在我的具体案例中,它做得很好),但我想集中讨论以下问题: 下面的代码在.NetFramework4.8上运行得很好,但在.Net 5上不能。为什么? [Test] public void ConceptualMe ..
发布时间:2022-05-25 15:02:04 C#/.NET

用__del__观察Python和PyQt中的对象破坏

我有一个PyQt QWidget(对象A;它只是一个暂停容器),其中包含多个子小部件(即,存在类似Qt的父子引用)。A的子部件是从另一个对象(对象B;不一定是Qt对象)引用的,该对象向A的子部件提供数据,并实际控制A的子部件的创建和结构。除了A的子级,对象B没有其他外部引用。对象A引用了对象B。因此,它是循环引用的纯粹教科书示例。 我想在某个时间点删除对象A和B的整个互连结构。我只需调用A.de ..
发布时间:2022-05-05 21:59:11 Python

服务器模式 GC 似乎永远不会收集 Gen 0 Heap

澄清问题(tl;dr) 在阅读和分析下面涵盖的所有结果后,问题似乎归结为 GC 在服务器模式下没有为我们的应用程序收集 Gen 0 堆,一旦切换到工作站模式,问题就会消失. 原始问题和详细信息 我的问题有点相关:这个问题和这个问题. 我们最近在测试环境中的 .NET 应用程序中遇到了似乎是内存泄漏的问题,工作进程在负载下或在无负载时会逐渐攀升至 450MB 左右的使用量. ..
发布时间:2022-01-25 08:25:54 C#/.NET

关闭 SqlConnection 和 SqlCommand c#

在我的 DAL 中,我编写如下查询: using(SQLConnection conn = "这里的连接字符串"){SQLCommand cmd = new ("sql 查询", conn);//执行它等等} 现在我突然想到我没有明确关闭 SQLCommand 对象.现在我知道“使用"块会处理 SQLConnection 对象,但这也会处理 SQLCommand 对象吗?如果不是那么我有一个严 ..
发布时间:2022-01-23 22:09:08 C#/.NET

对 Julia 中的内存分配和垃圾收集感到困惑

我对 Julia 中的内存分配有点困惑.我从常见问题解答中知道已完成清除大变量使用的内存通过将其设置为较小的值(如 0),然后运行 ​​gc(). 但是,我对以下内容有些困惑.我创建了一个随机 Float32 数组: @time A = rand(Float32, 10000, 10000); time 表示分配了大约 400MB 的 RAM,Julia 的 RAM 使用量增加了 400 ..
发布时间:2022-01-23 19:36:33 其他开发

Azure Web App 临时文件清理责任

在我的一个 Azure Web App Web API 应用程序中,我在 Get 方法中使用此代码创建临时文件 字符串路径 = Path.GetTempFileName();//在这个文件上写一些东西.然后阅读var fileStream = File.OpenRead(path);//然后将此流作为 HttpResponseMessage 响应返回 我的问题是,在这样的托管环境中(不是在 ..

Mono GC max-heap-size 没有记录.在生产中使用是否安全?

我需要为 Mono 使用的内存设置一个上限. 根据 blogs 可以使用参数 max-heap-size 来限制内存使用量.根据实验,根据代码,它确实做到了我想要的. 但是,此选项没有记录. 因此:在生产中依赖此选项是否安全(或者它是否有我看不到的缺点,例如:不能保证在未来的 Mono 版本中仍然可用)? 解决方案 有文档,获取文档的方法如下: export an inv ..
发布时间:2022-01-23 15:22:54 C#/.NET

获取 .NET 对象的内存地址 (C#)

我正在尝试追踪单声道运行时中的一个错误,其中一个变量似乎被分配给一个有效对象,然后被重新分配给一个虚假对象,特别是 //在我分配的代码的早期,很好var o = 新对象();//有效分配//稍后在代码中调用 this,不好lock(o)// ..
发布时间:2022-01-23 14:51:25 C#/.NET

垃圾收集器如何知道堆栈帧上的引用?

现代垃圾收集器(如在 CLR、JVM 中)使用哪些技术来判断堆栈中引用了哪些堆对象? 具体来说,VM 如何从知道堆栈开始的位置返回到解释所有对堆对象的本地引用? 解决方案 在 Java 中(很可能在 CLR 中,虽然我不太了解它的内部结构),字节码是用对象与原始信息输入的.因此,字节码中有数据结构来描述每个堆栈帧中的哪些变量是对象,哪些是原语.当 GC 需要扫描根集时,它使用这些 S ..
发布时间:2022-01-22 12:49:11 其他开发

通过在垃圾收集之前使用反射清理内容来安全地使用字符串作为密码

使用反射擦洗 String 是否使使用 String 与使用 char[] 密码一样安全? 从安全方面来看,通常认为最好的做法是使用 char[] 来存储/传递密码,因为可以在代码中尽快将其内容归零,这可能是在垃圾收集清理它并重用内存(擦除所有跟踪)之前显着降低内存攻击的时间窗口. 但是,char[] 不如 String 方便,所以如果可以“擦洗"一个 String需要,从而使 Str ..
发布时间:2022-01-22 08:36:29 Java开发