我的服务器有4个CPU,2个双核的,但是我在linux下的top里看到我的JAVA程序最多只占用99.9%的CPU.我不知道这是OS的限制还是JVM的限制,能解决吗?因为如果可以突破限制的话将提高程序的运行效率.节省的时间是很可观的.

解决方案 »

  1.   

    关于这一点,有两篇有趣的文章:Multi-core may be bad for Java:
    http://www.devwebsphere.com/devwebsphere/2006/11/multicore_may_b.htmlMulti-core may be good for Java!
    http://dev2dev.bea.com/blog/hstahl/archive/2006/12/multicore_is_go.html
      

  2.   

    楼主自己稍微 google 一下下就找得到答案了,何必苦等。
      

  3.   

    我的意思是在多CPU的服务器上,一个进程最多只能占用1个CPU是不是操作系统限制死的?或者是有办法设置成一个进程可以占用1个以上的CPU。
      

  4.   

    一个进程可以占用多个CPU,但是一个线程可能只会占用一个CPU。
      

  5.   

    楼上的,你的一个进程可以占用多个CPU是怎么实现的?
      

  6.   

    启动多几个线程就可以了。如果你的不行,那有可能是你使用的JVM本身的问题,你或者看看换一个版本的试试
      

  7.   

    是呀  通过多线程来专用多个cpu啊!
      

  8.   

    JAVA能对进程进行编程吗?我还没听说过来,挺新鲜。
      

  9.   

    ChDw(米) ,xuliu5519(六小不).我大概理解你们的意思了,起多个线程是可以占用到一个以上的CPU,但是这多个线程(都在一个进程下)占用的CPU百分比加起来最多99%,比如占用CPU1 30%,占用CPU2 69%(比如我的服务器是4个CPU,在linux下top就可以看到4个CPU的百分比占用情况,每个CPU最多99%,4个CPU就有4个99%),他们占用总的CPU资源仍然不超过99%,这在linux里的top下可以看到进程占用CPU的情况.因此当开启的线程数达到该进程占用到的CPU百分比加起来到99%时,再开过多的线程也就没有意义了.我是想能否让一个进程占用到全部4个CPU的和,就是99%*4(当然这只是个比方,总有OS的进程也要占用CPU的).