問題タブ [bytebuffer]
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 - Java でダイレクト バッファをガベージ コレクションする方法
不適切に破棄された直接バイト バッファーに分離したメモリ リークがあります。
GC は、これらのバッファーを保持するオブジェクトを収集しますが、バッファー自体は破棄しません。バッファーを含む一時オブジェクトを十分にインスタンス化すると、次の励ましのメッセージが表示されます。
私はこの問題を調べていて、どうやら
と
動作しない。
java - Java:プリミティブ配列でタイプパニングを使用していますか?
バイト配列を他のプリミティブ型配列との間で変換できるようにする必要がありますが、キャストする代わりに、型の punningが必要です。キャストなしの生のコピーの正しい用語は?
次のことができると思いました。
残念ながら、コンテンツを「ビットごと」または「生」にコピーして新しい IntBuffer を作成するのでbb.asIntBuffer()
はなく、既存の ByteBuffer に新しい「ビュー」を作成するようです。だからこそ.array()
、失敗することが意図されています。
JDKのソースをブラウズしたところ、これらすべてのバッファクラスで使用され、必要なことを実行するクラスがほとんど見つかりませんでしたが、内部です( class などUnsafe
)。
ObjectInputStream
バイトバッファをラップしてプリミティブ値を読み取ることで目標を達成できると.readInt()
思いますが、面倒で遅い回避策になると思います。
それで、魔法のプリミティブ型の算術演算(シフト、エンディアンのチェックなど)を行わずに可能な他の解決策はありますか?
注: 両方向が必要です: byte[12] -> int[3]、および int[3] -> byte[12]
java - ByteBuffer リサイクル クラス
指定された長さと少なくとも同じ大きさを取得でき、使用中のオブジェクトをロックして、コードで使用されている間は使用できないようにするByteBuffer
リサイクルクラスをどのようにコーディングするのだろうかと思っています。これにより、既存のものを使用する代わりに、などを何度も再構築することができなくなります。これを非常に効果的に実行できる既存の Java ライブラリはありますか? Javolution がオブジェクトのリサイクルに対応できることは知っていますが、要件が設定されているこのコンテキストのクラスにそれが適用されるのでしょうか?ByteBuffer
ByteBuffer
DirectByteBuffers
ByteBuffer
java - 直接java.nio.ByteBufferをサポートしていないJVMはどれですか?
Java NIO (Java 1.4以降)のリリースノートには、直接ByteBufferのサポートはオプション機能であると記載されています。どのJVMベンダー/フレーバーがそれをサポートしていないのか知りたいですか?JNIライブラリは常にマネージドByteBufferをコーディングし、最適化として直接ByteBufferを委任する必要がありますか?
ありがとう
java - JNI-ByteBufferパラメーターを使用したネイティブメソッド
私は方法を持っています:
このメソッドのjavahC/C++ヘッダーによって生成されます。
jobject(つまりByteBufferインスタンス)からデータ配列を取得するにはどうすればよいですか?
java - OutputStreamからByteBufferにデータを入れる方法は?
Javaでは、OutputStream(自分でそのストリームにデータを入力する)のコンテンツをByteBufferに入れる必要があります。簡単な方法でそれを行う方法は?
iphone - CGDataProviderCopyData() は実際にバイトをコピーしますか? それともポインターだけ?
私はそのメソッドをできるだけ速く連続して実行していますが、速いほど良いので、CGDataProviderCopyData()
実際にデータをバイト単位でコピーしている場合は、そのデータに直接アクセスするためのより高速な方法が必要だと思います。 ..メモリ内のバイトです。CGDataProviderCopyData()
実際にデータをコピーするかどうかは誰にもわかりますか? それとも、既存のデータへの新しいポインターを作成するだけですか?
c# - バイト配列をジャンクで埋める方法は?
私はこれを使用しています:
私が理解しているように、これは0で満たされた10kbのバッファ配列を初期化します。
この配列を毎回ジャンクデータで埋める(または初期化する)最も速い方法は何ですか?
その配列を5000回以上使用し、毎回異なるジャンクデータで埋める必要があるため、高速な方法を探しています。配列サイズも毎回変更する必要があります。
java - ByteBufferの一部を文字列に変換する
によって派生したバイトを含むByteBufferがありますString.getBytes(charsetName)
。ここで、「含む」とは、文字列がByteBufferposition()
との間のバイトシーケンス全体を構成することを意味しますlimit()
。
文字列を取り戻すための最良の方法は何ですか?(私がエンコーディング文字セットを知っていると仮定して)以下より良いものはありますか(少し不格好に見えます)
java - Java の ByteBuffer を使用して何百万ものメッセージを読み取る
これが私の問題です。1 つの大きな gzip ファイルです。何百万ものメッセージ。
各メッセージは次のもので構成されます。
に応じて、TYPE
のオフセットから数バイトを読み取り、PAYLOAD
メッセージを受け入れるか拒否するかを選択する必要があります。
私は java.io.DataInputStream を使用してこの種のことを行う方法を知っていますが、これは java.nio.ByteBuffer の完璧なアプリケーションのようです (こちらを参照してください! )。ただし、セットアップの助けが必要です。
では、ByteBuffer を使用して gzip ファイルからメッセージを読み取るにはどうすればよいでしょうか?
アップデート
私が見たいのは、ByteBuffer を効果的に使用するための正しい軌道に乗せることができるコードの骨格実装だと思います。ありがとう!