問題タブ [javolution]

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.

0 投票する
4 に答える
975 参照

java - 追加および削除時にガベージを生成しない効率的な Map または Set が必要

したがって、Javolution が機能しないため (ここを参照)、単純な使用法で効率的でガベージを生成しない Java Map 実装が必要です。java.util.Mapキーを追加および削除すると、ガベージが生成されます。Trove と Guava を確認しましたが、 Set<E> 実装がないようです。のシンプルで効率的な代替手段はどこにありjava.util.Mapますか?

EJP の編集:

エントリ オブジェクトは、エントリを追加すると割り当てられ、削除すると GC に解放されます。:(

0 投票する
2 に答える
989 参照

java - Java: オブジェクトのインスタンス化なしでテキストを解析してプリミティブ数にする

Java 言語を使用して、数値を含むテキスト ファイルを読みました。数テラバイトのデータと数千億の数値があります。

目標は、データをできるだけ速く取得し、GC アクティビティを最小限に抑えることです。テキストをプリミティブ (double、float、int) に直接解析したい。

直接私は意味します:

  • 一時的なヘルパー オブジェクトをインスタンス化せずに
  • java.lang.Double、java.lang.Float... でデータをボックス化せずに
  • 一時的な java.lang.String インスタンスを作成せずに (JDK Double.parseDouble(...) を呼び出す場合は必須の手順)

これまでのところ、javolution フレームワークを使用してきました。

javolution コードを調べたところ、実際には一時的なオブジェクトが割り当てられていません。また、CharSequence を受け入れるため、一時的な文字列をインスタンス化することなく、データ ファイルからデコードされた文字を表示できます。

代替手段またはより良い方法はありますか?

0 投票する
1 に答える
896 参照

java - サードパーティライブラリによってスローされた例外を検索する

これを正しく説明できればと思います。私はJavolutionライブラリを使用してXML構成ファイルの読み取りと書き込みを行っています。XMLStreamReader/Writerを使用しています。読んでいる間、私はタグを読んで、その属性をLinkedHashMapに保存しようとしています。ただし、例外がスローされています。これは、いつスローされ、コードで現在何が行われているのかによって、意味がないように見えます。

Eclipseデバッガーを使用すると、属性のキーと値がマップに追加されているときに例外がスローされます。

キーと値が追加された直後に、thisJavolutionからの例外をキャッチします。

どちらでもないkeyvalue、nullです。それらがマップに追加されているとき、例外がスローされている場所を確認するためにコードにさらに踏み込むことはできません。スタックトレースはなく、例外がスローされる場所や方法を説明するファイル/行番号はどこにも表示されません。

Javolutionの古い実装をグーグルですばやく検索すると、この特定の例外はXMLStreamWriterImplタイプのいくつかのメソッドを使用してのみスローされることがわかります。これらのメソッドを使用するたびにブレークポイントを設定しましたが、デバッガーはコードのかなり後の方まで使用されているブレークポイントをキャッチしません(そして私のlocalName変数は宣言時に初期化されます)。

この例外がスローされる理由を特定する方法について、誰かアドバイスがありますか?

スタックトレース:

0 投票する
1 に答える
476 参照

java - BTrace を使用して、クラスが初めて作成されたときを見つける

BTrace を使用して、プログラムで特定の型が最初にインスタンス化されたときを見つけようとしています (Eclipse デバッガーはそれを見つけることができません)。作成されているはずです)。

とにかく、JVisualVM を介して使用している次の方法がありますが、実行時に何も表示されません。

0 投票する
3 に答える
676 参照

memory-leaks - Javolution Struct を使用した Java OutOfMemoryError

JavaでC構造体を表すためにJavolution Structを使用しています。

ただし、新しいアイテムを作成するたびに、プロセスのネイティブ部分に割り当てられ、メモリ使用量が増加します。

最終的に、Java ヒープ サイズは小さいままですが、プロセスは 4GB のメモリに達します。その後、プロセスは OS によって強制終了されます (私は 32 ビットの Java を使用せざるを得ません)。

これは、問題を示す小さなクラスです。

これがこのプロセスの「トップ」です。ご覧のとおり、メモリは非常に急速に増加します。

886 ルート 20 0 1617m 447m 5536 S 26.8 1.2 0:00.83 java -cp . StructTest
886 root 20 0 1917m 761m 5536 S 28.2 2.1 0:01.12 java -cp . StructTest
886 ルート 20 0 2116m 990m 5540 S 359.9 2.7 0:04.80 Java -cp . StructTest
886 root 20 0 2120m 1.0g 5580 S 115.3 2.8 0:06.00 java -cp . StructTest
886 root 20 0 2302m 1.2g 5580 S 23.5 3.3 0:06.24 java -cp . StructTest
886 root 20 0 2568m 1.4g 5580 S 180.3 4.1 0:08.08 java -cp . StructTest
886 root 20 0 2817m 1.7g 5580 S 95.5 4.8 0:09.09 java -cp . StructTest
886 root 20 0 3114m 2.0g 5580 S 26.4 5.6 0:09.36 java -cp . StructTest
886 ルート 20 0 3406m 2.3g 5580 S 30.2 6.4 0:09.67 java -cp . StructTest
886 root 20 0 3699m 2.6g 5580 S 25.5 7.3 0:09.93 java -cp . StructTest
886 root 20 0 3994m 2.9g 5580 S 27.4 8.1 0:10.21 java -cp . StructTest

構造体を再作成する代わりに再利用することもできますが、複数のスレッドで多くのアイテムが必要です。

不要になった構造体のメモリを解放するようにプロセスに指示する簡単な方法はありますか?

編集: RedHat Linux でテスト済み (ほとんどが 6.2 ですが、5.6 でも発生します)。2.6.32-220.el6.x86_64 Red Hat Enterprise Linux Server リリース 6.2 (Santiago) Java 1.6.0_03 (1.6.0_03-b05) および 1.6.0_30 の 64 ビット バージョンで発生します。

ありがとう、アル

0 投票する
1 に答える
702 参照

loops - Javolution FastMap を反復処理する方法

2 月の Javolution 6.0.0 スナップショットを使用します。

これによれば、FastMap を反復処理できますが、java.lang.UnsupportedOperationException が発生し続けます。

http://javolution.org/target/site/apidocs/javolution/util/FastMap.html

私のコード

リンクで説明されているサンプルからさらに... map.head と map.tail さえ存在しません。

では、どうすればよいのでしょうか。

0 投票する
0 に答える
73 参照

xml - javolution xml の変更

作成したxmlファイルの属性値を変更しようとしました。XML ファイルを管理するには、javolution api を使用する必要があります。

XMLStreamWriter を使用して XML ファイルを作成します。ツールの実行の開始時にいくつかのコンポーネントを追加しますが、後でいくつかの値を変更したいと考えています。変更するためにこれらの属性にアクセスするにはどうすればよいですか?

たとえば、実行の開始時に EXECUTION_START および EXECUTION_STOP 属性を作成します。しかし、最後に EXECUTION_STOP 値を更新する必要があります。

何かアイデアはありますか?または、ストリームを閉じて再度開く必要がありましたか? また、XML ファイルを開いて内容を変更するには、何を使用する必要がありますか。

Tks