3

GCable オブジェクトを作成せずにソケットを使用する方法を探しています。遅延のためにGCを無効にしてJavaで実行するアプリケーションを作成しようとしているので、これを探しています。(ここで説明されている手法: http://www.infoq.com/presentations/Extreme-FIX-Messaging-for-Low-Latency) 毎秒数百万のメッセージを受信します。FX 市場は平日 24 時間開いているため、システムを再起動できるのはせいぜい週単位です。市場時間後に監視すると、さらに悪化します。したがって、システムの起動後にメモリリークが発生するため、新しいオブジェクトを作成する贅沢はありません。たとえば、配列オブジェクトであるバイト バッファを読み取る場合、これを GC する必要があるため、すぐにメモリ不足になります。おそらくオブジェクトがエスケープできる可能性があるため、このコンテキストでの JVM でのエスケープ分析がどれほど効率的かについてはよくわかりません。

http://www.rapidaddition.com/のような製品は、上記のプレゼンテーションに従って述べた後、GCable オブジェクトを生成しないと主張しています。この製品は所有権があるため、これがどのように行われるかを正確に知ることはできません. 同様の結果を達成するために何らかの手法を使用したことがある場合は、その方法を知りたいと思います.

いずれかのソケットからデータを読み取る機能を探しています。

  • バッファは再利用されます
  • これは GC する必要がないため、プリミティブ データのみを返します。

オブジェクト プーリングや、新しいオブジェクトが作成されないその他の手法などのスキームを内部的に実行する必要があります。

私が発見したいくつかの資料は、Netty、Grizzly、Mina、xSocket などのフレームワークに GC オーバーヘッドがあることを示唆しています。

http://www.znetdevelopment.com/blogs/2009/04/09/scalable-nio-servers-part-2-memory/

シリーズの他のブログ:

追加の背景情報: http://www.youtube.com/watch?v=5LQNesmht4o http://www.infoq.com/presentations/Progressive-Architectures-at-the-Royal-Bank-of-Scotland

4

0 に答える 0