問題タブ [directmemory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - オフヒープ キャッシュの DirectMemory は運用の準備ができていますか? アクティブですか?
DirectMemory は、Java 用の唯一のオープン ソース オフ ヒープ キャッシュのようです。
生産の準備はできていますか?
アクティブで実行可能なプロジェクトですか?メーリング リストのアーカイブを見たところ、ボリュームが非常に少なくなっています。
java - ヒープ上のJavaキャッシュにはどれくらいのデータが多すぎますか? オフヒープ キャッシュについていつ考え始める必要がありますか?
ehcache のようなオンヒープ キャッシュにはどのくらいのデータが多すぎますか?
24GB RAM サーバーを取得しています。おそらく最初は 2 ~ 4 GB をキャッシュに割り当てますが、最終的には 20 GB 程度をキャッシュに割り当てることになるかもしれません。オンヒープ キャッシュの GC に時間がかかりすぎることをどの時点で心配する必要がありますか?
ところで、利用可能なオープン ソースのオフ ヒープ キャッシュは DirectMemory だけですか? プライムタイムの準備はできていますか?
java - GetByteArrayElementsはダイレクトメモリを使用しますか?
プログラムにダイレクトメモリルームがあります。
ByteBuffer.allocateDirect()
JavaおよびC++側で使用されるプログラムは、そのバッファーにデータを書き込みます。しかし、にを変更してデータを書き込むために使用しようとしByteBuffer.allocateDirect()
たときByteBuffer.allocate()
。GetByteArrayElements()
私はまだ同じダイレクトメモリOOMを手に入れました。
私は混乱しています、それはGetByteArrayElements()
ダイレクトメモリを使用して配列をコピーしますか?
本当にありがとう。
java - Linux 上の Java hotspot jvm でのヒュージ ページと DirectByteBuffer の使用
やりたいこと
GC が物事を動かさないようにするには、ダイレクト メモリを使用する必要があります。それらのために巨大なページを有効にしたいと思います。
ここのところ
フラグ -XX:+UseLargePages は、ヒープ バッファー (非直接 ByteBuffers) を使用する場合は正常に機能しますが、DirectByteBuffers を使用する場合は機能しなくなりました。MappedByteBuffers と hugetlbfs ファイルシステムも使用してみました。これは機能しますが、いくつかの問題が発生するため、別の解決策を探しています。
CentOS リリース 6.3、ホットスポット、jdk1.7 の構成
[編集]
hotspot のソース コードを見ると、malloc を使用して Unsafe でメモリを割り当てていますが、巨大なページを使用するには shmat/shmget または mmap が必要でした。
[編集] 非ヒープメモリの理由
私たちは、メモリ内データベースの NUMA コンテキストにあり、多くの長期間有効なオブジェクトがあります。UseNUMA フラグがオンの場合、JVM は古い世代を分割しません。ダイレクト メモリを使用すると、メモリを必要とするスレッドの近くにメモリを保持できます。
DirectByteBuffers を使用する決定には、明らかにベンチマークが大きな役割を果たしました。DirectByteBufferを使用する必要があるかどうかを尋ねているのではなく、質問に対する答えを探しています。
java - 長いメモリ アドレスを使用して Java メソッドを呼び出すにはどうすればよいですか?
Javaで長いメモリアドレスを持っていたとしましょう。メモリアドレスが関数ポインタであることがわかっている場合、このアドレスで関数を呼び出すにはどうすればよいですか?
私がこれに興味を持っている理由は、オフヒープ オブジェクトを扱うためです。GC の対象とならないダイレクト バイト バッファにオブジェクトを作成します。これにより、ヒープ上にオブジェクトを作成しないと GC が実行されないため、GC の一時停止時間を無効にすることができます。
java - Java参照を使用して、Java Unsafeを使用してメモリを解放する方法は?
Java Unsafe クラスを使用すると、次のようにオブジェクトにメモリを割り当てることができますが、このメソッドを使用すると、メモリアドレスが提供されないため、終了時に割り当てられたメモリをどのように解放しますか...
オブジェクト参照からメモリアドレスにアクセスする方法はありますか?デフォルトの hashCode 実装によって返される整数が機能する可能性があるため、実行できます...
どうも正しくないようです...
c# - DMA を使用して高速シリアル ポートにアクセスする
C# で serialport コンポーネントを使用していますが、うまく動作します。しかし問題は、高速 (たとえば 2 Mbps) のデータ転送を処理するために、どうすればより速くできるかということです。
これについて調査したところ、メモリに直接アクセスできることがわかりました(このリンクのようなDMAを使用)。アプリケーションで定義して使用する方法を誰か教えてもらえますか?
java - 誰が直接メモリを割り当てているかを効率的に見つける方法
私は、多くのチームの多くのコンポーネントを統合する Java プロジェクトに取り組んでいます。
現在、ダイレクト メモリの大量消費が見られますが、どこに割り当てられているかはわかりません。
このような問題を調査するための効率的な方法(ツール)を探しています
助けてくれてありがとうフィリップ