【一句话】Thread.sleep(0)的作用

首先一句话:

在循环中加入Thread.sleep(0),用于在循环中放入safepoint,JVM进行STW,然后触发GC。

详细:

说白了,它的作用就是给可数(int控制)循环加入safepoint,让JVM可以GC。

对于JVM,执行native函数的线程看作“已经进入safepoint“,而sleep就是一个native方法。

 

可数循环:使用int或更小数据类型控制的循环,直到循环结束才有safepoint

不可数循环:使用long或更大数据类型控制的循环,循环中可以存在safepoint

 

将循环控制变量数据类型修改为long和使用Thread.sleep(0)功能类似。

 

posted @ 2023-01-18 13:38  马儿跑  阅读(222)  评论(1编辑  收藏  举报