1
當我們運行我們的守護程序應用程序時,它的線程數因不同的操作系統而異。 即,當在Windows 7中執行代碼時,它需要15個線程(當代碼運行1.5個小時)時,當相同的代碼在MAC OS X中執行相同的時間時,它將使用26個線程。線程數量因操作系統而異OS
注意:兩臺機器都使用相同的程序代碼。我的疑問是,Windows是32位,Mac OS是64位,這是否會改變線程數?
什麼都可能是這種線程數變化的原因?
上任何幫助將不勝感激..
謝謝大家分享你的解決方法和解決方案。 我終於把Mac中的守護程序的線程轉儲並且能夠發現線程中存在一些鎖。但是我仍然不知道爲什麼Mac OS中的線程數總是保持低於Windows 7線程數。 在下面找到帶鎖的線程轉儲。
"DefaultUDPTransportMapping_10.190.146.17/0" - Thread [email protected]
java.lang.Thread.State: RUNNABLE
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
- locked [email protected]
at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
- locked [email protected]
at java.net.DatagramSocket.receive(DatagramSocket.java:712)
- locked [email protected]
- locked [email protected]
at org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(DefaultUdpTransportMapping.java:345)
at java.lang.Thread.run(Thread.java:637)
"RMI TCP Accept-0" - Thread [email protected]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
- locked [email protected]
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
at java.lang.Thread.run(Thread.java:637)
向我們展示代碼。 – 2012-12-04 09:52:41
你使用可能使用線程的框架嗎?也許本機代碼創建線程,這在不同的平臺上肯定不一樣。 – zeller
我認爲由應用程序創建的實際線程數是相同的,但JVM使用不同數量的線程,具體取決於實現。 – assylias