我想了解JVM內部如何實現基本類型的數組,像int []
JVM中如何實現Java int []數組?
我的問題是兩個部分:
1 - 是否使用字節緩衝區內?我在哪裏可以找到源代碼,然後可能根據我的需要進行更改(以創建我自己的修改的JVM)。
2 - 有沒有什麼辦法詭計javac
不使用int []
的內置實現,而是使用庫中提供的實現,比如說類路徑-cp
?這是可能的和如何?
我的動機是將此int []
聲明在JVM之外的內存中(使用allocateDirect()
),並從本機JNI代碼以外訪問它。這應該避免內存複製開銷。
-B
我正在使用MPJ Express(Java中的MPI實現),它使用內部緩衝層來緩衝用戶數據。問題在於這種緩衝。在高端互連(Infiniband)上,將數據複製到內部緩衝層會顯着降低性能,即與本機C MPI實現(如MVAPICH或Open MPI)相比,帶寬相對較低。所以我想繞過這個緩衝層,直接訪問用戶數據而不改變API(用戶程序)。 – Bibrak
@Bibrak你使用'System.arraycopy'來複制數據嗎? –
@AlexeiKaigorodov但它沒有做一個副本?我想做一個Zero-Copy – Bibrak