我正在使用64G內存的遠程服務器上工作,我正在使用一個使用32位JVM的平臺,我所要做的就是創建多個JVM(大約500個)。發生什麼事情是,在創建190左右後,我得到來自Java的OOM錯誤,它說無法創建新的本地線程。每個JVM佔用大約20M的RAM,因此20 * 190大約爲4G。 那麼所有JVM使用的內存是否有限制?順便說一下,我在Linux中的進程限制大約是10000,並且/ proc/sys/kernel/pid_max中的限制是65000,並且我也沒有得到其他進程缺少資源的情況。另一點,改變堆大小也沒有幫助。有什麼想法嗎?是否有運行多個32位JVM的限制?
0
A
回答
1
您的問題與堆大小無關。它與您能夠創建的線程數有關。
當你運行一個JVM時,你有很多創建(和活動)的線程。我至少可以算出25個。例如,Timer任務,編譯器線程,Finalizer線程和GC線程都有線程。
除了SerialGC,每個垃圾收集器都會創建一個與您擁有的核心數量成正比的線程數,因此它可以對每個JVM的線程數量產生巨大影響。
有些事情要做:
- 增加你的進程限制
- 設置的最大線程數(
-XX:ConcGCThreads=N
,-XX:ParallelGCThreads=N
) - 做一些線程轉儲檢查在JVM中的線程數和爲您的平臺推出正確的編號
更多JVM選項:http://jvm-options.tech.xebia.fr/
希望有所幫助!
相關問題
- 1. 64位JVM上運行的Eclipse 32位
- 2. 32位JVM和64位JVM之間Integer.MAX_VALUE是否有區別?
- 3. 是否有可能克服這個32位限制?
- 4. 告訴我是否在32位或64位JVM中運行的方法
- 5. 運行支持32位的32位與日食JVM在Windows 64位
- 6. 32位Linux程序的整個運行時庫樹是否需要32位?
- 7. 位移是否有限制?
- 8. 32與64位JVM
- 9. 64位操作系統上的32位Java:JVM的數量是否有限制?
- 10. 在32位操作系統上運行64位jvm
- 11. 如何在64位Linux上運行32位JVM?
- 12. 是否有可能強制在32位進程中運行的.NET dll像「64位進程一樣運行」?
- 13. 移位時是否有n位限制?
- 14. 這是一個32位或64位的JVM嗎?
- 15. 是否可以限制每秒運行多少個goroutines?
- 16. 強制Java applet運行在32位而不是64位JRE
- 17. 32位JVM,ProcessBuilder.start()和ENOMEM
- 18. JVM和Glassfish的32位和64位
- 19. 強制Apache HTTPD在32位運行
- 20. 在32位運行python更多wxPython
- 21. 是否存在運行時間限制?
- 22. ORACLE的多插入是否有限制?
- 23. mips是否有32位地址和32位指令?
- 24. Maven或Bamboo中是否有一些設置限制測試在與Bamboo相同的JVM中運行,而不是在單獨的JVM中運行?
- 25. Javascript中的行數是否有限制?
- 26. MSBuild項目是否有任何方法來確定32位或64位版本的MSBuild是否正在運行?
- 27. 檢查正在運行的進程是32位還是64位
- 28. 如何從x64模式的windows下的現有32位進程獲得32位堆棧限制/ 32位TEB/TIB?
- 29. C++ 32位VS 64的浮動限制
- 30. 主機上正在運行的進程數是否有限制?