2016-11-10 7 views
1

最近私は科学計算のために大量のデータをメモリーに格納する方法を探していました。私はscala-offheapLArrayを見ました。私が気づいたことの1つは、ネイティブJava配列で動作している既存の関数がある場合、その配列をオフ・ヒープ配列に直接適用できないことです。どちらのライブラリーも、オフ・ヒープ配列から通常の配列へのコピーを必要とします。オフ・ヒープ・アレイの直接操作

これがメモリモデルの本当の制限であるのか、単にライブラリAPIによって制限されているのか分かりません。オフ・ヒープ・アレイのJava配列「ビュー」を取得することは可能ですか?

+0

いいえ –

+0

JavaヒープはすべてのJavaオブジェクトのメモリ領域であるため、「ヒープなし」と「Java配列」は矛盾しています。この正式な側面には直ちに技術的な影響はないため、この自己矛盾した願望で達成したいことが問題になります。これまで述べてきたのは、「大量のデータをメモリに格納したい」ということです。ヒープを使って何が問題になったのですか? – Holger

答えて

3

jillegalそれはできると主張しますが、それはガベージコレクタの前提に違反し、それらの違反に遭遇したときに火に上がらない特定のコレクタに依存しているため、基本的に大きなハックです。おそらく、プロダクションでの使用には適していません。

プリミティブ型にアクセスする必要がある場合は、現在、バイトバッファは、オンヒープアクセスとオフヒープアクセスで同じAPIを提供する抽象ですが、フィールドを1つずつ抽出する必要があります。

関連する問題