草庐IT

Crimson$硬件$CPU

全部标签

java - 使用 Thread.sleep 线程 hibernate 时的 CPU 消耗

我有一个服务器程序可以轮询数据库以获取新请求,我希望每隔1分钟进行一次轮询,所以我在程序中设置了一个Thread.sleep()while循环。问题是每当这个程序应该“hibernate”时,CPU消耗就会急剧上升(即大约25-30%)。矛盾的是,当程序不处于hibernate状态,忙于处理请求时,CPU消耗下降到0.4%。我在网上阅读并发现与thread.sleep相关的性能下降,但我找不到任何可行的替代方案(Thread.wait需要通知对象,我觉得这在我的场景中是无用的)主循环(当没有新请求时)不做任何事情,这是当CPU消耗为25%时正在做的所有事情的框架->投票->没有新记录?

java - 为什么 Java CPU 配置文件(使用 visualvm)在一个什么都不做的方法上显示如此多的命中?

这是我以前在其他环境中使用其他分析工具时见过的情况,但在这种情况下尤其引人注目。我正在获取一个运行了大约12分钟的任务的CPU配置文件,它显示几乎一半的时间花费在一个实际上什么都不做的方法上:它有一个空体。什么会导致这个?我不认为该方法被调用的次数多得离谱,当然不会占执行时间的一半。就其值(value)而言,所讨论的方法称为startContent(),它用于通知解析事件。事件沿着过滤器链(可能有十几个)传递,每个过滤器上的startContent()方法除了调用链中下一个过滤器上的startContent()之外几乎什么都不做。这是纯Java代码,我在Mac上运行它。附件是CPU采样

java - 如何确定硬件线程数

什么是硬件线程。它总是使可用的处理器内核数量增加一倍吗?如何确定IntelCore2Duo处理器中的硬件线程数?能否通过Java代码判断? 最佳答案 Whatismeantbyahardwarethread.你告诉我们。这不是一个真正的既定术语。Isitalwaysdoublethenumberofprocessorcoresavailable?啊,现在你好像在说hyperthreading其中一个CPU核心内的部分冗余被用来“伪造”一个额外的核心。Howtodeterminethenumberofhardwarethreadsin

java - 高 CPU,可能是由于上下文切换?

我们的一台服务器的应用程序的CPU负载非常高。我们查看了各种统计数据,但无法找到问题的根源。目前的一个理论是涉及的线程太多,我们应该尽量减少并发执行的线程数。只有一个主线程池,有3000个线程,和一个与之一起工作的WorkManager(这是JavaEE-Glassfish)。在任何给定时刻,大约有620个独立的网络IO操作需要并行执行(使用java.NIO也不是一个选项)。此外,大约有100个不涉及IO的操作也是并行执行的。这种结构效率不高,我们想看看它是否真的造成了损害,或者仅仅是一种不好的做法。原因是这个系统中的任何更改都非常昂贵(就工时而言),因此我们需要一些问题的证据。现在我

java - 似乎在等待的线程的高 CPU 使用率

我目前正在运行一些JMeter测试来测试Web服务的性能。它使用了大量的CPU。对于一个JMeter请求线程,它使用10-30%(取决于请求类型)。当我将其增加到仅15个线程时,我的CPU利用率约为95%。自然,我想弄清楚发生了什么。我做了一个HprofCPU示例(我尝试了times选项,但需要一个半小时才能启动我的服务,并且没有消息会通过)。以下是该采样的结果片段(超过15分钟)。CPUSAMPLESBEGIN(total=220846)FriAug2213:38:542014rankselfaccumcounttracemethod114.96%14.96%33038300514j

Java降低CPU使用率

问候-我们在工作中遇到了一些喜欢使用的疯子while(true){//Code}在他们的代码中。正如您可以想象的那样,这会最大限度地利用CPU。有谁知道降低CPU使用率以便其他人也可以使用服务器的方法。代码本身只是不断地轮询互联网以获取网站上的更新。因此我想稍微sleep的方法会大大降低CPU使用率。此外,所有操作都是在String对象(Java)中完成的,有人知道StringBuilder会减少多少开销吗?感谢指点 最佳答案 很多关于StringBuilder的“民间智慧”都是不正确的。例如,改变这个:Strings=s1+":"

java - 为什么我的线程程序只使用一个 CPU?

我有一个执行长时间计算的程序,所以我想加快它的性能。所以我现在尝试启动3个线程,但是java.exe仍然占用25%的CPU使用率(所以,只使用了一个CPU),即使我尝试使用它仍然存在>.setPriority(Thread.MAX_PRIORITY);并实时设置java.exe的优先级(24)。我尝试使用RealtimeThread但它似乎运行得更慢。如果每个线程分配给一个处理器就完美了,总CPU使用率提高到75%,但我不知道该怎么做。这就是我的代码现在的样子:Threadg1=newMyThread(i,j);g1.setPriority(Thread.MAX_PRIORITY);g

12. STM32——硬件IIC驱动OLED屏幕显示

STM32——硬件IIC驱动OLED屏幕显示OLED屏幕OLED屏幕特点OLED屏幕接线说明OLED屏幕显存OLED屏幕原理OLED屏幕常用指令OLED屏幕字模软件的使用写命令写数据OLED初始化(厂家提供的代码)设置起点坐标全屏填充清屏OLED打开OLED关闭显示字符串显示中文显示黑白图片整合oled.coled.hmain.ccodetab.hOLED屏幕OLED即有机发光管(OrganicLight-EmittingDiode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代

java - Java 中的同步构造是否在内部(以某种方式)使用硬件原语 CAS 操作?

我很难理解synchronized语句和关联的notify()、notifyAll的硬件支持是什么()和wait()方法,出现在每个java对象上。我已阅读并知道如何使用此构造,但我一直假设它们直接映射到硬件原语。当我深入研究有关并发的书籍时,我只读到了硬件直接提供的比较和交换(CAS)操作。似乎这个构造是由JVM本身创建/维护的。如果我的理解是正确的,每个对象都包含一些状态,其中包含有关访问它的线程的信息。这用于定义该对象的监视器并协调多个线程对该对象的访问。但如果是这样的话,如何通过并发访问管理这个状态本身?它肯定必须得到管理,对吗?是CAS吗?如果是CAS,那就意味着只有一种真正

java - 单 Java 线程运行时的双核 CPU 利用率

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WouldamultithreadedJavaapplicationexploitamulti-coremachineverywell?我的双核机器(WindowsXP32位环境)上有一个像这样的简单Java线程运行publicstaticvoidmain(String[]strs){longj=0;for(longi=0;i我的期望是它会坚持使用单个CPU来充分利用高速缓存(因为在循环中我们一直使用局部变量j,因此一个CPU利用率将是100%,而另一个几乎是虚度。令我惊讶的是,线程启动后,两个CPU的利用率