int可数大循环事故

1
2
3
4
5
6
7
tomcat线程池
for(int i:10000000){
for(int i:10000000){
//xxxx
}
}
//可能才有Safepoint

int 循环里是没有Safepoint,也就是它会一直执行下去,在parallel那一章我们都知道vmthread每隔1000ms就会让线程进入Safepoint进行stw,stw得等所有线程都进入Safepoint,才能继续往下执行,也就是你这一个大循环线程就会拖累所有线程,你妈的连jstack都进不去

小米的HBASE出过这么一个事故

解决方案:换成long,因为long会有Safepoint