garbage-collection相关内容

.NET 对象事件和处置/GC

编辑:在 Joel Coehoorns 出色的回答之后,我明白我需要更具体,所以我修改了我的代码以更接近我想要理解的东西...... 事件: 据我了解,在后台,事件是 EventHandlers 又名委托的“集合",当事件引发时将被执行.所以对我来说,这意味着如果对象 Y 有事件 E 并且对象 X 订阅了事件 YE,那么 Y 将引用 X,因为Y必须执行位于X的方法,那样X不能被收集,那我明白 ..
发布时间:2022-01-16 10:01:48 C#/.NET

标准 C++ 中的垃圾收集是自动的吗?

据我了解,在标准 C++ 中,每当您使用 new 运算符时,您还必须在某些时候使用 delete 运算符以防止内存泄漏.这是因为 C++ 中没有垃圾收集.在 .NET 中,垃圾收集是自动的,因此无需担心内存管理.我的理解正确吗?谢谢. 解决方案 对它的长答案是,每次调用 new 时,在某个地方,不知何故,delete必须调用,或者其他一些释放函数(取决于内存分配器等) 但您不必是提供 ..
发布时间:2022-01-16 10:01:37 C#/.NET

java垃圾回收日志条目是否“Full GC(系统)"?意思是一些名为 System.gc() 的类?

垃圾收集日志中的“Full GC (System)"条目是什么意思?那个叫 System.gc() 的类? 我的垃圾收集日志有两种不同的“完整 gc"条目类型?一个带有“系统"一词,另一个没有.有什么区别? (更新:我搜索了这个词并没有找到明确的答案,只有几个问题.所以我想我会发布它. 系统: 164638.058:[Full GC (系统) [PSYoungGen:227 ..
发布时间:2022-01-16 10:01:20 Java开发

SoftReference 过早地收集垃圾

我正在为我的 Android 应用程序实现缓存机制. 我使用 SoftReference,就像我找到的许多示例一样.问题是,当我在 ListView 中向上或向下滚动时,大部分 图像已被清除.我可以在 LogCat 中看到每次应用程序加载新图像时都会对我的应用程序进行垃圾收集.这意味着 ListView 中大部分 的不可见图像都消失了. 所以,每次我回滚到较早的位置(我之前真正下载过图 ..
发布时间:2022-01-16 10:01:14 Java开发

android - GC_FOR_ALLOC 释放 6346K, 7% free , paused 143ms, total 143ms

我正在使用 OSMdroid 库开发离线 mapView.我的 tilesource 加载了瓷砖,但呈现稳定退出.但事实是在我的日志消息中,我不断收到此错误: GC_FOR_ALLOC 释放 6346K,7% 空闲,暂停 143ms,总共 143ms 我不确定如何调试它?任何想法,我是否有任何内存泄漏? 解决方案 这不是错误,而是垃圾收集器运行的信息. 如果您看到很多这样 ..

如何禁用 Java 垃圾收集器?

我们有一个 PHP webapp,它调用 Java 二进制文件来生成 PDF 报告(使用 JasperReports).Java 二进制文件将 PDF 输出到标准输出并退出;然后 PHP 将 PDF 发送到浏览器.这个 Java 命令持续大约 3 到 6 秒,我认为当它持续 6 秒时,这是因为 GC 启动了.我想禁用 GC,因为无论如何,当命令退出时,所有内存都会返回. 我想知道如何为 Ja ..
发布时间:2022-01-16 10:00:52 Java开发

在生产环境中设置 -XX:+DisableExplicitGC:会出现什么问题?

我们刚刚召开了一次会议,以解决用于计算保险费率的 Web 应用程序中的一些性能问题.计算在 C/C++ 模块中实现,该模块也用于其他软件包.为了使其可用作 Web 服务,实现了一个 Java 包装器,它公开了一个基于 XML 的接口并通过 JNI 调用 C/C++ 模块. 测量结果表明,Java 部分内的每个计算都花费了几秒钟.所以我的第一个建议是在 VM 中启用垃圾收集日志记录.我们可以立 ..
发布时间:2022-01-16 10:00:42 Java开发

确定正在运行的垃圾收集器

我在 Windows Server 2003 x64(2x Xeon 4 核心 procs)上运行一个大型 .net 4.0 x86 应用程序,并且遇到问题,我的应用程序每天大约 2-3 次冻结 30 秒,然后恢复运行像平常一样.该应用程序每周仅重新启动一次,并消耗 400-800 mb 的内存,所以我假设这些冻结是垃圾收集.我只在日志中看到冻结,而不是实时,或者我会检查任务管理器来确认. ..
发布时间:2022-01-16 10:00:32 C#/.NET

Java DirectByteBuffer 包装器是否被垃圾收集?

我知道分配directbytebuffer时,它不受垃圾回收的影响,但我想知道包装对象是否被垃圾回收. 例如,如果我分配了一个新的 DirectByteBuffer dbb,然后使用 dbb.duplicate() 复制(浅复制)它,我将在同一块内存周围有两个包装器. 这些包装器会受到垃圾回收吗?如果我这样做了 while(true){DirectByteBuffer dbb2 = ..
发布时间:2022-01-16 10:00:17 Java开发

垃圾收集不是为 C 设计的,是否有特定的原因?

我听说 C 自动收集垃圾不是最理想的——这是真的吗? 是否有特定原因没有为 C 实现垃圾收集? 解决方案 别听“C老了,所以没有GC"伙计们.GC 存在无法克服的基本问题,使其与 C 不兼容. 最大的问题是准确的垃圾回收需要能够扫描内存并识别遇到的任何指针.一些高级语言限制整数不使用所有可用的位,因此可以使用高位来区分对象引用和整数.然后,此类语言可以将字符串(可能包含任意八位 ..
发布时间:2022-01-16 10:00:02 其他开发

值类型会收集垃圾吗?

我知道引用类型将被垃圾回收.我想知道值类型是否也会从堆栈中被垃圾回收? 解决方案 很不清楚你的问题是什么意思.你能仔细定义什么是“收集的垃圾"吗?方法?它的意思是“是 GC 算法的输入",还是“通过压缩 GC 堆来释放",还是什么? 存储在堆栈中的值——无论是值类型的值还是引用类型的值——都是集合算法的根.它们没有被收集,因为它们是有生命的东西,几乎可以让其他一切都保持活力. ..
发布时间:2022-01-16 09:59:56 C#/.NET

Main Activity 销毁后不会被垃圾回收,因为它被 InputMethodManager 间接引用

我从 这里. 但是,建议的解决方案并不能解决泄漏问题.我在 Windows XP (SDK 2.3.1) 上使用 android 模拟器对此进行了测试.我转储了堆并检查了主要活动仍在堆中(我使用了 MAT) 这就是我所做的: 使用 HelloWorldActivity 创建 HelloWorld 应用(它没有子视图) 运行模拟器并启动 HelloWorld 应用. 点击后退键 ..

Java 主要和次要垃圾收集

我一直在阅读 Java 中的垃圾收集和 SO Q&A,但我对垃圾收集的类型感到困惑. 我们以吞吐量收集器为例.(又名并行收集器).文档说它使用多个线程来执行 Minor 集合,并为 Major 集合使用单线程(与串行收集器相同). 现在我的问题: Full GC 是什么意思:a) 是否意味着 Minor 和 Major 收集都已完成?或者 b) Full GC == Major ..
发布时间:2022-01-16 09:59:30 Java开发

如何获取 javascript 对象引用或引用计数?

如何获取对象的引用计数 是否可以确定一个 javascript 对象是否有多个引用? 或者如果它有引用除了我正在访问它的那个? 或者甚至只是为了获取引用计数本身? 我能否从 javascript 本身中找到这些信息,或者我是否需要跟踪我自己的引用计数器. 显然,我的代码必须至少有一个对它的引用才能访问该对象.但我想知道是否有其他引用它,或者我的代码是否是唯一可以访问它的地方.如果 ..
发布时间:2022-01-16 09:59:24 前端开发

Haskell 软实时的当前状态

我正在考虑将 Haskell 用于软实时应用程序.我可能会使用演员,因为它的价值.我想知道是否有人对 Haskell 的当前实时状态有所了解.具体来说,GC 暂停应用程序的问题.我在 Google 上进行了广泛的搜索,发现了 2 多年前的大量讨论,但没有最新的.以下是我找到的一些参考资料: 在大型实时系统中使用 Haskell:如何(如果?)? Haskell的软垃圾GC性能怎么样游戏 ..
发布时间:2022-01-16 09:59:17 其他开发

您如何防止 IDisposable 传播到您的所有班级?

从这些简单的类开始... 假设我有这样一组简单的类: 类总线{驱动程序 busDriver = new Driver();}类驱动程序{鞋 [] 鞋 = { 新鞋(),新鞋() };}类鞋{鞋带花边 = 新鞋带();}类鞋带{布尔绑定=假;} 一个Bus有一个Driver,Driver有两个Shoe,每个Shoe 有一个 鞋带.都非常傻. 将 IDisposable 对象添加到鞋带 ..
发布时间:2022-01-16 09:58:52 C#/.NET

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

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