获得徽章 0
赞了这篇沸点
有没有人和我一样很讨厌疯狂星期四的文案 尤其是朋友一发就是发一堆 后面还有人跟着发哈哈哈哈 我不知道笑点在哪里 但是我又不好意思叫他们不要发 然后我就想到一个办法 v我50今天肯德基疯狂星期四 我边吃边告诉你这个办法是什么
5
Java-白银段
Java-白银段
赞了这篇沸点
问个问题,在 Java 项目中 cpu switches 高的原因都有哪些,已经查了一些方案,大家还有啥排查思路吗?

1. 线程的创建和销毁:频繁地创建和销毁线程会增加 CPU switches。
2. 锁竞争:锁竞争会导致线程上下文切换,从而增加 CPU switches。
3. 阻塞操作:阻塞操作会导致线程等待,从而增加 CPU switches。例如,网络 I/O 操作、文件 I/O 操作等。
4. 频繁的对象分配和回收:Java 使用垃圾回收机制来自动管理内存,但是在频繁的对象分配和回收过程中可能会导致大量的 CPU switches。
5. 大量的计算和内存访问:一些复杂的算法可能会导致大量的计算和内存访问,从而增加 CPU switches。
1. 递归调用:递归调用是一种自我调用的编程技巧,如果递归调用深度过深,那么就会导致 CPU 不断地在进行函数调用和返回操作,从而增加 CPU 的 switches 次数。
1. 循环次数:循环是编程中常见的控制结构之一,如果循环次数过多,那么就会导致 CPU 不断地在进行循环判断和跳转操作,从而增加 CPU 的 switches 次数。
1. 垃圾回收:当一个 Java 程序中没有可用的内存时,垃圾回收器会被触发,这会导致 CPU 上下文切换。
1. 使用 Object.wait() 和 notify():这些方法用于线程间的通信,当一个线程在 Object.wait() 上等待时,它会被挂起,直到另一个线程调用 notify() 或 notifyAll()。
1. 使用 Thread.sleep() 和 Thread.yield():这些方法会导致当前线程暂停执行,允许其他线程运行,从而可能引发上下文切换。
1. 使用定时器和 ScheduledExecutorService:定期执行任务时,操作系统需要在不同的任务或线程间切换。
1. 系统调用:如获取系统时间(System.currentTimeMillis())或执行系统级操作,可能会导致从用户态切换到内核态,增加上下文切换。

为了减少上下文切换的影响,可以采取一些策略,比如
1. 优化线程数量
1. 使用非阻塞 I/O、
1. 避免不必要的同步操作等
1. 优化递归调用
1. 减少循环次数
展开
3
想装台Java开发机,要求多多[得意]

CPU:要强
内存:64G,Java你懂得
显卡:集显就行
硬盘:1T固态
主板:适合ITX,能和CPU搭配即可
机箱:目前在看ITX机箱,大小4-10升都有,散热要好
风扇+电源:声音小,能带动即可
总体预算2000-3000吧,没有独显便宜好多
展开
5
#win11# 这翻译
blackecho于2022-07-14 09:07发布的图片
评论
Java-白银段
Java-白银段
个人成就
文章被阅读 217
掘力值 10
收藏集
2
关注标签
29
加入于