問題タブ [jsr223]

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 投票する
1 に答える
2175 参照

java - Nashorn ScriptEngine はどのくらいのメモリを使用しますか?

現在、サーバー側のスクリプト機能を製品の 1 つに追加する作業を進めています。その一環として、JSR 223 スクリプト エンジンを評価しています。サーバー上で多数のスクリプトを実行する可能性があるため、これらのスクリプト エンジンのメモリ使用量が特に心配です。Rhino (Apple JDK 1.6.0_65-b14-462-11M4609、Mac OS X 10.9.2) と Nashorn (Oracle JDK 1.8.0-b132) を比較すると、ScriptEngine インスタンスごとのメモリ使用量に劇的な違いがあるようです。

これをテストするために、10 個の空の ScriptEngine インスタンスを起動し、stdin からの読み取りをブロックする単純なプログラムを使用します。次に、jmap を使用してヒープ ダンプを取得し (jmap -dump:format=b,file=heap.bin )、ダンプ内の関連するスクリプト エンジン インスタンスを検索します。

コンテキスト内のさまざまなリーダー/ライター フィールドを無効にする理由は、それらを使用しないためです。Rhino の以前のヒープ ダンプは、それらがインスタンスごとのオーバーヘッドのかなりの部分を構成していることを示唆しています (そして、共有されているようには見えません)。 .

これらのヒープ ダンプを Eclipse MAT で分析すると、次のインスタンスごとの保持ヒープ サイズが得られます。

  • Rhino: 13,472 バイト/インスタンス (リーダー/ライター フィールドを null にしないと、最大 73,832 バイト/インスタンスになります)
  • Nashorn: 324,408 バイト/インスタンス

この 24 倍のサイズの Nashorn の増加は予想されますか? 実行速度は、実行するスクリプト (ほとんどが I/O バウンド) にとって大きな問題ではないため、Java 8+ で使用する独自の Rhino のコピーを出荷することを検討しています。

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

java - スクリプトの評価後に更新された変数を読み取る

Rhino で動作する JSR 223 (スクリプト) コードをテストして、Nashorn でどのように動作するかを確認しています。Bindings違いの 1 つの領域は、 への引数を介して渡された変数への更新の処理にありますengine.eval()。Rhino では、このメソッドを使用して、スクリプトを評価するときに動的変数バインディングを渡し、スクリプトの実行後にこれらの変数の更新された値を読み取ることもできます。ただし、Nashorn ではこれは機能しません。Bindings オブジェクト内のすべての変数の値は、スクリプトの実行後も初期値のままです。

TestNG テスト ケースで説明するには:

Rhino (Mac OS X 10.9.3 上の Apple JDK 1.6.0_65) を使用すると、テストに合格します。Nashorn (Oracle JDK 1.8.0_b132) では失敗します。後で変数を読み取るために、さまざまなアプローチを試しました- 、などを呼び出しますengine.get()engine.getBindings(ScriptContext.ENGINE_SCOPE).get()結果engine.getContext().getBindings(...).get()は常にnullです。

を呼び出して後で で読み取ると、動作させることができますが、バインディングを引数として渡すだけの場合と比べると、少し面倒です。engine.put("state", 1)engine.get("state")

JSR-223仕様を読んでも、この使用法をサポートする文言が見つからないので、エンジン固有ですか? Nashorn で私が望むことを達成する他の方法はありますか?

編集: 機能する 1 つのアプローチは、各変数を でラップし、Javascript でそれらのAtomicReference明示的なメソッドを呼び出すことです。.set(..)醜いですが、おそらく実行可能です。

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

groovy - JMeter でユーザー定義変数をインクリメントする

パフォーマンスをテストする登録 REST サービスがあります。ループ/スレッドリクエストごとに必要なパラメーター mobilenumber のみを変更する必要があります

負荷テストの一部として複数のテストにスレッド化/ループしているときに、ユーザー定義変数を (別の udv として保存された増分値によって) 増分するにはどうすればよいですか。

成功したすべての登録要求に対して jsr 233 プリプロセッサを使用しようとしています

変更するパラメーターが 1 つしかないため、csv を使用したくありません

使用できる var.get() および vars.put() 関数について読んでいますが、正しく取得できません。


次のコードを試す - コードの下に表示されるログイン

ログ:

ログによると、インクリメントは成功しますが、vars.put() は成功しませんか??

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

scala - Scala JSR 223 インポート型/クラス

Stuff次の例は、 の定義が見つからないため失敗します。

ステートメント内で独自のクラスを使用できる import ステートメントが見つかりませんeval。私は何か間違ったことをしていますか?中に使用するクラスをインポートするにはどうすればよいevalですか?

編集:より直接的な回答を引き出すためにコード例を明確にしました。

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

java - Jmeter 内で既存の Java API テストを使用する方法

バックエンドを個別にテストする既存の Java テストがあります。これらのテストは非常に精巧で、単一のユーザーとしても実行されます。これらの既存のテスト/クラス/ライブラリ/jarなどを単純に取り、それらをJMeterでラップして、コマンドライン(つまりMaven)からJMeterテストとして実行できるかどうかを知りたいです。

いくつかのリスナーや他の JMeter コンポーネントを追加するかもしれませんが、マルチスレッドではなく、JMeter が持つレポート機能がないことを除けば、テストはそのままで完璧です。

これは JSR233 を使用して実行できますか?

ライブラリが別の場所にある場合はどうなりますか? JMeter プロジェクトでそれらを使用するにはどうすればよいですか?

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

groovy - JMeter の Groovy スクリプト: GString 補間を使用するクロージャーが含まれている場合、エラー「''\n'' 以外を期待しています;とにかく @ 行を取得しました...」

適切に機能するクロージャーを定義するこのグルーヴィーなスクリプトがあります。

しかし、スクリプトに GString 補間を使用する別のクロージャーを追加すると。

エラーが発生します

追加された閉鎖がコメントされていたとしても。

それでも失敗します!何を与える?

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

java - シングルトンの別のインスタンスを作成する Scala Script Engine

ということで、Scalaでスクリプトシステムを作っているのですJSR 223が、原因がわからないという問題に遭遇しました。

(スクリプトから) イベント リスナーを追加し、(コアから) イベントをディスパッチするメソッドを持つシングルトンのようなクラスがあります。すべてうまくいきましたが、何らかの理由で、イベントをディスパッチするときに、追加されたリスナーが消えてしまいました。

問題を再現した後、スクリプト エンジンがシングルトンの別のインスタンスを作成することがわかりました。

これが私のSingletonクラスです:

そして、ここに私のMainクラスがあります:

出力は次のとおりです。

スタック トレースは、スクリプト エンジンが最終的に の新しいインスタンスを作成することを示していますがSingleton、その理由はわかりません。

ありがとうございました。