线上使用的实际效果:
1
metrxqin 2018-06-21 15:09:57 +08:00
你确定真的有必要?
|
2
neoblackcap 2018-06-21 15:17:44 +08:00
其实我觉得你们需要换 GC 算法,毕竟 G1 的回收已经很快了,听说下一代也要学 Azual,搞 pauseless gc,垃圾回收可以在 heap 上 T 的时候低至 10ms,不需要人工接入。
|
3
ShineSmile 2018-06-21 15:24:53 +08:00
面试的时候面试官说 java 的 GC 是引用计数
是真的么? 那遇到循环引用可咋办。 |
4
dbpe 2018-06-21 15:58:44 +08:00
|
5
ren2881971 2018-06-21 16:11:38 +08:00
从没主动回收过。。
|
6
yanaraika 2018-06-21 16:22:47 +08:00 via Android
现在一堆公司问 /搞 JVM 调优就不会花 3500 刀买个 Azul Zing JVM? 况且很多时候面试官和被面试者的理解都是错的
总之不到万不得已不要搞跨层优化,底层一变就成了负优化 |
10
micean 2018-06-21 16:41:10 +08:00
自己塞满内存去触发 GC 完全没有必要吧
|
11
copie 2018-06-21 16:46:16 +08:00 via Android
@ShineSmile Python 使用的是引用计数。处理循环引用使用标记-清除。为了加速使用了分代回收。虽然简单但是有效。
|
12
DRcoding 2018-06-21 17:20:02 +08:00 1
Start 还挺多的,不过反正我是不敢在线上用这玩意。。。。
|
13
ShineSmile 2018-06-21 18:09:56 +08:00
|
14
seancheer 2018-06-21 20:04:21 +08:00
|
15
Raymon111111 2018-06-21 22:28:31 +08:00
这个思路当然有用
我们业务高峰发生 GC 就是一大堆超时, 一般会在低峰期定时去 GC 躲开高峰期的 GC 行为 |
16
rim99 2018-06-22 07:52:34 +08:00 via iPhone
先码一下。
cms 不是本来就要指定 old gen 百分比来触发 gc 么? |
17
CYKun 2018-06-22 08:31:51 +08:00 via Android
挑个刺:阀值→阈值
|
18
balamiao 2018-06-22 11:50:28 +08:00
|
19
ShineSmile 2018-06-22 12:38:11 +08:00
@seancheer 能举个例子么?
|
20
ShineSmile 2018-06-22 12:41:12 +08:00
@seancheer 算了 大家各自自以为是吧
不是研究 PL 的 也不想撕 |
23
lxbjkben OP @neoblackcap G1 只有大堆会减少超长 GC,小堆没区别。
|
24
lxbjkben OP |
25
ShineSmile 2018-06-27 15:59:01 +08:00
@dbpe 哈哈哈
刚在 V2EX 看到那个公司的软文 2333333333 |
26
seancheer 2018-07-03 19:33:07 +08:00
@ShineSmile 不好意思,才看到。举个 c 里面的例子
``c struct S_YourStruct{ int age; } typedef struct S_YourStruct YourStruct; void main() { YourStruct* p = (YourStruct*)malloc(sizeof(YourStruct )); //不判断有没有申请成功了 memset(p,0,sizeof(YourStruct)); p->age = 11; func(p); } void func(YourStruct * p) { p->age = 100; //这里修改也会在 main 中的 p 生效,因为指针都指向同一个对象 p = (YourStruct*)malloc(sizeof(YourStruct )); //修改了 p 指针的指向,但是 main 中的 p 没有受到影响,对于指针本身来讲,实际上是 [值传递] ,而并非 [引用传递] ,Java 里面也是同样的道理,本质上都是 [值传递] ,Java 同样的操作和这里的结果是一样的。 } `` |