Tag: 垃圾收集

.Net vs Java垃圾收集器

有谁知道Java和.Net垃圾收集器之间的主要区别? networkingsearch没有透露太多,这是一个在testing中出现的问题。

内存泄漏在C#

是否有可能在托pipe系统泄漏内存,当你确保所有句柄,实现IDispose东西都处置? 会不会有一些变数被遗漏的情况呢?

根源是什么?

垃圾收集的根源是什么? 我已经把root的定义看作“你程序可以访问的任何引用”,live的定义就是一个正在使用的对象,它可以是一个局部variables,静态variables。 我有点混淆区分根和活的物体之间的差异。 什么是根path? 根和活物体如何工作? 有人可以详细说明吗?

.NET 4.0中的内存使用量非常高

我有一个C#Windows服务,我最近从.NET 3.5转移到.NET 4.0。 没有其他代码更改。 在3.5上运行时,给定工作负载的内存利用率大约为1.5 GB内存,吞吐量为每秒20 X。 (X在这个问题的背景下并不重要。) 运行在4.0上的完全相同的服务使用3GB至5GB +的内存,并且每秒不到4X。 事实上,随着内存使用量的不断攀升,服务通常会停滞不前,直到我的系统使用率达到99%,并且页面文件交换变得很糟糕。 我不确定这是否与垃圾回收有关,或者是什么,但我很难搞清楚。 我的窗口服务使用“服务器”GC通过configuration文件开关如下所示: <runtime> <gcServer enabled="true"/> </runtime> 将此选项更改为false似乎没有什么区别。 另外,从4.0版新增的GC中读取的数据,大的变化只影响工作站的GC模式,而不是服务器的GC模式。 所以也许GC与这个问题无关。 想法?

JVM GC能否在参考比较的中间移动对象,即使双方都指向相同的对象,也会导致比较失败?

众所周知,GC有时会在内存中移动对象。 而且据我的理解,只要所有的引用在对象被移动的时候(在任何用户代码被调用之前)都被更新,这应该是完全安全的。 但是,我看到有人提到参考比较可能是不安全的,因为GC在参考比较的中间移动了对象,即使两个参考都指的是同一个对象,比较也会失败。 也就是说,有什么情况下下面的代码不会打印“真”? Foo foo = new Foo(); Foo bar = foo; if(foo == bar) { System.out.println("true"); } 我试着用googlesearch,缺乏可靠的结果让我相信说这个的人是错误的,但是我find了一个似乎表明他是正确的论坛post( 就像这个 )。 但是这个线程也有人说,不应该是这样的。

是什么让Ruby慢?

Ruby在某些事情上很慢。 但是哪些部分是最成问题的呢? 垃圾收集器对性能有多大影响? 我知道我曾经有过几次单独运行垃圾回收器需要花费几秒钟的时间,尤其是在使用OpenGL库时。 我用Ruby的matrixmath库特别慢。 ruby如何实现基本的math运算有问题吗? Ruby中是否有任何dynamic特性不能有效地实现? 如果是这样,Lua和Python等其他语言如何解决这些问题? 最近有没有显着提高性能的工作?

什么时候应该使用删除vs设置元素在JavaScript中为null?

可能重复: 在JavaScript中删除对象 我有一个JS对象具有大量的属性。 如果我想强制浏览器垃圾收集这个对象,我是否需要将这些属性中的每一个设置为null或者是否需要使用删除操作符? 两者有什么区别?

你如何从壳牌强制垃圾收集?

所以我在远程盒子上查看jmap的堆,我想强制垃圾收集。 你如何做到这一点没有popupjvisualvm或jconsole和朋友? 我知道你不应该强迫垃圾收集的做法 – 你应该弄清楚为什么堆大/成长。 我也意识到System.GC()实际上并没有强制垃圾回收 – 它只是告诉GC你希望它发生。 说了这么简单吗? 我错过了一些命令行应用程序?

垃圾收集C ++库

什么免费和商业垃圾收集库可用于C + +,每个的优缺点是什么? 我感兴趣的是来自实际使用领域的难得的教训,而不是营销或促销活动。 没有必要详细说明与自动垃圾收集相关的常规权衡,但请务必提及使用的algorithm(引用计数,标记和扫描,增量等),并简要总结其后果。

爪哇GC:为什么两个幸存者地区?

对于Sun / Oracle的JVM,我已经读过GCalgorithm将新一代划分为一个Eden地区和两个幸存者地区。 我想知道的是,为什么两个幸存者地区,而不是一个? algorithm可以在伊甸园和只有一个幸存者地区之间保持乒乓球(目前在两个幸存者地区之间的方式); 或者这种方法有什么缺点?