在我的應用程序中,我運行了一些不受信任代碼的線程,因此我必須防止內存溢出。我有一個WatchDog分析當前線程的時間(線程被串行調用)。 但我如何確定內存使用情況? 我只知道整個VM的內存使用情況,Runtime.totalMemory()
? 如果有可能找出線程的使用情況,或使用單個進程,那就太好了。通過該過程的內存使用情況,我可以計算線程的使用情況。Java中線程或進程的內存使用情況
6
A
回答
2
由於執行Java程序的JVM是Java進程,因此您不必擔心這一點。所有線程在JVM進程中共享相同的內存空間。
因此,它是充分依靠
0
你需要做的是在自己的進程/ JVM運行不受信任的代碼。這可以使用JNI接口(如果您的操作系統允許)。
1
Java應用程序無法控制其線程使用的內存量(或CPU)數量,而不管線程是運行受信任代碼還是不受信任代碼。在當代JVM中沒有用於執行 的API。而且肯定沒有用於監視線程內存使用情況的API。 (甚至不清楚這是否是一個有意義的概念......)
要保證控制不可信Java代碼的資源使用情況,唯一的方法是在單獨的JVM中運行代碼,並使用操作系統級別資源控制(如ulimit,nice,sigstop等)和「-Xmx」來限制JVM的資源使用。
有段時間,Sun製作了JSR 121旨在解決這個問題。這個JSR將允許應用程序分成通過消息傳遞進行通信的部分(稱爲「隔離區」),並提供了一個隔離區監視和控制另一個的能力。遺憾的是,隔離API尚未在任何主流JVM中實現。
相關問題
- 1. 使用本機進程的Java內存使用情況
- 2. Linux:如何測量進程內線程的內存使用情況?
- 3. Java內存使用情況/線程池性能問題
- 4. 在使用阻塞進程時管理線程和內存使用情況
- 5. Java內存使用情況
- 6. java內存使用情況
- 7. 如何控制多線程中的內存使用情況?
- 8. 在Cocoa/Objectice-C中測量進程的內存使用情況?
- 9. 如何獲取node.js中的子進程內存使用情況?
- 10. 如何跟蹤linux中進程的cpu /內存使用情況?
- 11. python中的子進程內存使用情況
- 12. 檢查Python中子進程的內存使用情況
- 13. 使用'top'查看進程的內存使用情況
- 14. 使用進程ID獲取進程的實際內存使用情況
- 15. 在qnx中查找進程線程的堆使用情況
- 16. 線程本地存儲內存使用情況
- 17. 的boost :: ASIO :: io_service.post()後臺線程的內存使用情況
- 18. m2crypto線程使用情況
- 19. Python - 在窗口中獲取進程名稱,CPU,內存使用情況和峯值內存使用情況
- 20. 在.NET中快速檢查或限制線程內存使用情況?
- 21. Java Web WebLogic Server上的應用程序內存使用情況
- 22. 關於Java應用程序的內存使用情況
- 23. 將線程映射到其內存使用情況的工具?
- 24. 監控每個線程的內存使用情況
- 25. 線程的內存使用情況不斷增加
- 26. 獲取線程的內存使用情況
- 27. 如何找出Java中的java進程的CPU使用情況
- 28. 預測進程的內存使用情況
- 29. 監視子進程的內存使用情況
- 30. 如何優化php進程的內存使用情況?
根據定義,線程與進程中的其他線程共享相同的內存空間。你的問題沒有多大意義。 JVM =進程。 1進程有很多線程。 – 2012-03-12 20:29:39
JVM = process,這意味着每個java進程都有一個自己的JVM? – Nicolas 2012-03-12 20:32:00
是的。當你啓動java時,你啓動一個新的JVM。 – 2012-03-12 20:32:54