斷定以下情況:今天JVM中最接近真實(資源受限)分離物的是什麼?
- 你有一個龐大而複雜的系統(分佈式,並行,龐大的數據集),它支持很多用戶。代碼被髮送到數據。
- 要允許系統中的移動代碼 - 即不受信任的代碼,將相同的JVM中運行的系統的其餘部分,取數據的局部性的優勢,避免反序列化等
您可以將代碼放在一個有趣的類加載器中,並使用像小程序運行器那樣的自定義安全策略。但仍然存在問題:
整個系統應該受到保護以免受惡意代碼的影響 - 例如產生線程負載,吞噬所有cpu,分配太多內存。
千禧年初期提出的構想是JSR-121。隔離旨在帶來進程隔離的大部分好處 - 限制cpu使用,線程產生,堆使用:一般的資源分配。
鑑於這項工作似乎已被Sun拋棄,現在最接近的是什麼?
到目前爲止,我的想法是:
- 字節碼轉換的代碼中插入分配跟蹤。谷歌似乎做了類似的事情:http://code.google.com/p/java-allocation-instrumenter/。它需要一點工作,像谷歌(約書亞)布洛赫自己進入一個角落,使各種事情包私人...
- 也禁止安全經理不能調用的東西,例如線程創建。
- 插入(罕見)中斷檢查到循環和遞歸函數中,以便監視線程可以觀察(使用ThreadMXBean),如果花費太長時間,則中斷有問題的線程。只是限制重入可能會更簡單 - 在對用戶代碼的任何調用中,基本塊只能在中止前輸入n次。
有沒有更好或現有的方法來做到這一點?
我能想到的最好辦法解決一般情況下的問題現在要將每個用戶都放入自己的JVM中,該JVM的XMX較低,並受到CPU的操作系統的限制。隨着用戶數量的增長,效率非常低下,但編寫類似這樣的代碼的想法讓我大開眼界。 – bwawok 2010-10-23 16:52:22
到目前爲止運氣還不錯?你會更新嗎?謝謝。我一直在尋找這個,這是我得到多遠http://stackoverflow.com/questions/3887130/java-implementation-of-a-jvm – mschonaker 2011-07-13 06:27:31