垃圾收集如何在JavaScript中工作? 与.NET垃圾收集类似吗? 这是因为在VBScript中垃圾收集的实现是不好的,人们避免了它,并build立了JavaScript作为他们的标准客户端语言的偏好?
我是Java新手,对Java中的垃圾收集器感到困惑。 它究竟做了什么以及什么时候开始实施。 请描述Java中垃圾收集器的一些属性。
我已经configuration了Java将垃圾收集信息转储到日志( verbose GC )。 我不确定日志中垃圾收集条目的含义。 这些条目的样本张贴在下面。 我在Google上search过 ,没有find明确的解释。 我有一些合理的猜测,但我正在寻找答案,提供严格的条目数字是什么意思,由可靠的来源支持的定义。 所有答案的自动+1引用sun文档。 我的问题是: PSYoungGen是指什么? 我认为这与前一代(年轻一代)有关,但究竟是什么? 数字的第二个三位数与第一个三位数的区别是什么? 为什么名字(PSYoungGen)为第一个三位数字指定,而不是第二个? 每个数字(内存大小)在三元组是什么意思。 例如在109884K-> 14201K(139904K)中,是GC 109884k之前的内存,然后减less到14201K。 第三个数字如何相关? 为什么我们需要第二组数字? 8109.128:[GC [PSYoungGen:109884K-> 14201K(139904K)] 691015K-> 595332K(1119040K),0.0454530secs] 8112.111:[GC [PSYoungGen:126649K-> 15528K(142336K)] 707780K-> 605892K(1121472K),0.0934560secs] 8112.802:[GC [PSYoungGen:130344K-> 3732K(118592K)] 720708K-> 607895K(1097728K),0.0682690sec]
我试图理解Java堆术语中年轻 , 老年和永久代的概念,尤其是三代之间的相互作用。 我的问题是: 年轻一代是什么? 老一辈是什么? 什么是永久的一代? 三代人如何互相交stream?
我正在浏览一些旧书,并findPeter Hagger的“Practical Java”的副本。 在性能部分中,build议在不再需要时将对象引用设置为null 。 在Java中,是否将对象引用设置为null提高性能或垃圾收集效率? 如果是这样,这是一个什么情况? 容器类? 对象组成? 匿名内部类? 我经常在代码中看到这个。 这是现在已经过时的编程build议还是仍然有用?
在Java中将未使用的对象引用分配给null是否以任何可衡量的方式改进垃圾回收过程? 我对Java(和C#)的使用经验告诉我,通常会违背虚拟机或JIT编译器,但我见过同事使用这种方法,我很好奇如果这是一个很好的做法或者其中一个巫术编程迷信?
虽然我理解玩这个函数的严重含义(或者至less我认为是这样),但是我不明白为什么它会成为可敬的程序员永远不会使用的东西之一,即使是那些甚至不知道它是什么。 比方说,我正在开发一个应用程序,内存使用情况因使用者的行为而异。 应用程序生命周期可以分为两个主要阶段:编辑和实时处理。 在编辑阶段,假设创build了数十亿甚至数万亿个对象, 其中一些很小,有些则不是,有些可能有终结者,有些可能不是,并假设他们的生命期从几毫秒到长时间不等。 接下来,用户决定切换到实时阶段。 在这一点上,假设演出起着基础性的作用,而节目stream程中稍有改变就可能带来灾难性的后果。 然后通过使用对象池将对象创build减less到最小,但是,然后,GC出乎意料地响起,将其全部抛出,并且有人死亡。 问题:在这种情况下,在进入第二阶段之前调用GC.Collect()是否明智? 毕竟,这两个阶段从来没有互相重叠过,GC可能收集到的所有优化和统计数据都没有什么用处。 注意:正如你们中的一些人所指出的,.NET可能不是像这样的应用程序的最佳平台,但这超出了这个问题的范围。 目的是澄清GC.Collect()调用是否可以提高应用程序的整体行为/性能。 我们都同意,在这种情况下你会做这样的事情是非常罕见的,但是GC再次尝试猜测,大部分时间都做得很好,但这仍然是猜测。 谢谢。
我想应用一个更改,以便我可以使用服务器GC设置为我的C#3.5应用程序 – 我可以通过编辑machine.config文件。 唯一的问题是我不知道那里是什么。 如何在多个不同的机器上以可重复的方式find这个文件的path
请问C ++开发人员,请给我们一个关于RAII是什么的好的描述,为什么它很重要,以及它是否与其他语言有关联? 我确实知道一点点。 我相信它代表“资源获取是初始化”。 然而,这个名字并没有和我(可能是不正确的)理解RAII是什么关系:我得到的印象是,RAII是一种初始化堆栈上的对象的方法,当这些variables超出范围时,析构函数会自动被称为导致资源被清理。 那为什么不叫“使用栈来触发清理”(UTSTTC :)呢? 你怎么从那里到“RAII”? 而且你怎么能在堆栈上做些什么来清理堆上的东西呢? 另外,有没有不能使用RAII的情况? 你有没有发现自己希望收集垃圾? 至less有一个垃圾收集器可以用于某些对象,同时让其他人被pipe理? 谢谢。
我正在寻找详细描述python垃圾收集如何工作的文档。 我感兴趣在哪一步做了什么。 这三个集合中有哪些对象? 每一步中删除了哪些对象? 什么algorithm用于参考循环查找? 背景:我正在实施一些search,必须在less量时间内完成。 当垃圾收集器开始收集最老的一代时,它比其他情况下“慢得多”。 它花费的时间比预期的search更多。 我正在研究如何预测何时收集最老的一代,需要多长时间。 使用get_count()和get_threshold()来预测何时收集最早的一代是很容易的。 这也可以用set_threshold()来操纵。 但是我不明白,通过强制collect()或者等待计划收集是更好的办法。