Java 主动 GC 功能

2018 年 6 月 21 日
 lxbjkben
在厂里上班时候撸了一个根据 old gen 百分比在特定时间段触发 cms gc 的的小功能,simple yet useful : )
https://github.com/vipshop/vjtools/issues/39
5319 次点击
所在节点    程序员
26 条回复
metrxqin
2018 年 6 月 21 日
你确定真的有必要?
neoblackcap
2018 年 6 月 21 日
其实我觉得你们需要换 GC 算法,毕竟 G1 的回收已经很快了,听说下一代也要学 Azual,搞 pauseless gc,垃圾回收可以在 heap 上 T 的时候低至 10ms,不需要人工接入。
ShineSmile
2018 年 6 月 21 日
面试的时候面试官说 java 的 GC 是引用计数
是真的么?
那遇到循环引用可咋办。
dbpe
2018 年 6 月 21 日
@ShineSmile 说明那个面试官,没去了解 java 的 gc 机制。。现代化的虚拟机 gc 算法都是路径是否可达的方式来的。

计数器的方式。。远古的虚拟机好像也没有用这种方式的。。
ren2881971
2018 年 6 月 21 日
从没主动回收过。。
yanaraika
2018 年 6 月 21 日
现在一堆公司问 /搞 JVM 调优就不会花 3500 刀买个 Azul Zing JVM? 况且很多时候面试官和被面试者的理解都是错的

总之不到万不得已不要搞跨层优化,底层一变就成了负优化
wwqgtxx
2018 年 6 月 21 日
@dbpe 直到现在 CPython 还在用引用计数呢,貌似也 并不 远古
xeaglex
2018 年 6 月 21 日
@dbpe C++智能指针用的是计数器
dbpe
2018 年 6 月 21 日
@xeaglex
@wwqgtxx
好吧。。我孤陋寡闻了
micean
2018 年 6 月 21 日
自己塞满内存去触发 GC 完全没有必要吧
copie
2018 年 6 月 21 日
@ShineSmile Python 使用的是引用计数。处理循环引用使用标记-清除。为了加速使用了分代回收。虽然简单但是有效。
DRcoding
2018 年 6 月 21 日
Start 还挺多的,不过反正我是不敢在线上用这玩意。。。。
ShineSmile
2018 年 6 月 21 日
@dbpe
是一次糟糕的面试体验
不过最终也没选中我
因为我是搞.NET 的(逃

只是想吐槽现在好多做技术的人云亦云,照本宣科
而且有的书的内容还是错的

歪楼
还有典型的:作为参数传递时:值类型不可以修改,而引用类型“可以修改“
实际上都不能改,因为分别传的是值的副本和引用的副本。
看到书上修改引用类型对象的属性,就认为引用类型“可改”。
实际上原引用和引用的副本都指向同一个对象。
所以属性是更新是有效的。

当然,
C#还可以用 ref 啊 out 啊来传递引用本身。
java 还真太清楚……
seancheer
2018 年 6 月 21 日
@ShineSmile
java 只有值传递,没有引用传递。
就像你说的,很多人把引用和引用副本指向同一个对象错误的理解成了引用传递。
Raymon111111
2018 年 6 月 21 日
这个思路当然有用

我们业务高峰发生 GC 就是一大堆超时, 一般会在低峰期定时去 GC 躲开高峰期的 GC 行为
F7EXi3C25zGhO40b
2018 年 6 月 22 日
先码一下。
cms 不是本来就要指定 old gen 百分比来触发 gc 么?
CYKun
2018 年 6 月 22 日
挑个刺:阀值→阈值
balamiao
2018 年 6 月 22 日
@ShineSmile 引用计数,呵呵了

可达路径分析了解一下~
ShineSmile
2018 年 6 月 22 日
@seancheer 能举个例子么?
ShineSmile
2018 年 6 月 22 日
@seancheer 算了 大家各自自以为是吧
不是研究 PL 的 也不想撕

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/464693

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX