标签: garbage-collection

Java中的垃圾收集器是什么?

我是Java新手,对Java中的垃圾收集器感到困惑.它实际上做了什么以及什么时候开始行动.请描述Java中垃圾收集器的一些属性.

java garbage-collection

101
推荐指数
5
解决办法
12万
查看次数

垃圾收集器如何在这里避免无限循环?

考虑下面的C#程序,我在codegolf上提交它作为创建循环而没有循环的答案:

class P{
    static int x=0;
    ~P(){
        System.Console.WriteLine(++x);
        new P();
    }
    static void Main(){
        new P();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的检查中,这个程序看起来像一个无限循环,但似乎运行了几千次迭代,然后程序成功终止而没有错误(没有抛出错误).P最终的终结者不会被称为规范违规吗?

显然这是一个愚蠢的代码,应该永远不会出现,但我很好奇该程序如何完成.

原始代码高尔夫邮件:: https://codegolf.stackexchange.com/questions/33196/loop-without-looping/33218#33218

c# garbage-collection

101
推荐指数
3
解决办法
4604
查看次数

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

所以我在远程盒子上看着一个带有jmap的堆,我想强制垃圾收集.如果不突然进入jvisualvm或jconsole和朋友,你怎么做?

我知道你不应该在强制垃圾收集的实践中 - 你应该弄清楚为什么堆很大/正在增长.

我也意识到System.GC()实际上并没有强制进行垃圾收集 - 它只是告诉GC你希望它发生.

话虽如此,有办法轻松做到这一点吗?我失踪了一些命令行应用程序?

java garbage-collection jmx jmap

98
推荐指数
6
解决办法
8万
查看次数

为什么大对象堆和我们为什么关心?

我读过有关Generations和Large object heap的内容.但我仍然不明白拥有大型对象堆的意义(或好处)是什么?

如果CLR只是依赖于第2代(考虑到Gen0和Gen1的阈值很小来处理大型对象)来存储大型对象,那么可能出现什么问题(在性能或内存方面)?

.net clr garbage-collection large-object-heap

96
推荐指数
4
解决办法
4万
查看次数

Java垃圾收集日志消息

我已经将java配置为将垃圾收集信息转储到日志中(详细GC).我不确定日志中的垃圾收集条目是什么意思.这些条目的样本发布在下面.我在Google上搜索过,并没有找到可靠的解释.

我有一些合理的猜测,但我正在寻找答案,这些答案提供了条目中数字的严格定义,并由可靠的消息来源支持.对所有引用sun文档的答案自动+1.我的问题是:

  1. PSYoungGen是指什么?我认为它与之前的(年轻?)一代有关,但具体到底是什么?
  2. 第二个三元组和第一个三元组有什么区别?
  3. 为什么名称(PSYoungGen)指定为第一个三元组而不是第二个?
  4. 三元组中的每个数字(内存大小)是什么意思.例如,在109884K-> 14201K(139904K)中,是GC 109884k之前的存储器,然后它减少到14201K.第三个数字如何相关?为什么我们需要第二组数字?

8109.128:[GC [PSYoungGen:109884K-> 14201K(139904K)] 691015K-> 595332K(1119040K),0.0454530秒]

8112.111:[GC [PSYoungGen:126649K-> 15528K(142336K)] 707780K-> 605892K(1121472K),0.0934560 secs]

8112.802:[GC [PSYoungGen:130344K-> 3732K(118592K)] 720708K-> 607895K(1097728K),0.0682690 secs]

java logging garbage-collection

94
推荐指数
3
解决办法
17万
查看次数

弱引用是否有实际用途?

可能重复:
弱引用 - 它们有用吗?

由于垃圾收集器可以随时声明弱引用,是否有任何实际的理由使用它们?

java garbage-collection weak-references

94
推荐指数
5
解决办法
2万
查看次数

超出了GC开销限制

JVM用于抛出'java.lang.OutOfMemoryError:超出GC开销限制'的采样时间是多少?我知道你可以用参数GCTimeLimit和GCHeapFreeLimit来控制98%和2%,但是采样时间是多少?

java garbage-collection jvm

93
推荐指数
1
解决办法
15万
查看次数

生产中的Java G1垃圾收集

由于Java 7将默认使用新的G1垃圾收集,Java是否能够处理一个数量级更大的堆而不会产生"破坏性"的GC暂停时间?有人在生产中实际实施了G1,你的经历是什么?

公平地说,我唯一一次看到非常长的GC暂停是非常大的堆,远远超过工作站.澄清我的问题; G1将打开数百GB的网关?TB?

java garbage-collection g1gc java-7

90
推荐指数
8
解决办法
5万
查看次数

在Javascript中减少垃圾收集器活动的最佳实践

我有一个相当复杂的Javascript应用程序,它有一个主循环,每秒调用60次.似乎有很多垃圾收集正在进行(基于Chrome开发工具中内存时间线的'锯齿'输出) - 这通常会影响应用程序的性能.

因此,我正在尝试研究减少垃圾收集器必须完成的工作量的最佳实践.(我在网上找到的大部分信息都是为​​了避免内存泄漏,这是一个稍微不同的问题 - 我的内存被释放,只是垃圾收集过多了.)我假设这主要归结为尽可能重用对象,但当然魔鬼在细节中.

该应用程序按照John Resig的简单JavaScript继承的方式构建在"类"中.

我认为一个问题是一些函数可以每秒调用数千次(因为它们在主循环的每次迭代中使用了数百次),也许这些函数中的本地工作变量(字符串,数组等)可能是问题.

我知道更大/更重的对象的对象池(我们在一定程度上使用它),但我正在寻找可以全面应用的技术,特别是涉及在紧密循环中被调用很多次的函数.

我可以使用哪些技术来减少垃圾收集器必须执行的工作量?

而且,也许还有 - 可以使用哪些技术来识别哪些对象被垃圾收集最多?(这是一个非常大的代码库,所以比较堆的快照并不是很有成效)

javascript garbage-collection

90
推荐指数
3
解决办法
3万
查看次数

静态字段是否打开以进行垃圾回收?

给定一个仅在程序设置中使用的假设实用程序类:

class MyUtils {
   private static MyObject myObject = new MyObject();
   /*package*/static boolean doStuff(Params... params) {
       // do stuff with myObject and params...
   }
}
Run Code Online (Sandbox Code Playgroud)

当myObject不再被使用时,它会被垃圾收集,还是会在程序的生命周期中保留?

java static garbage-collection static-members

89
推荐指数
5
解决办法
4万
查看次数