問題タブ [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.
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 のコピーを出荷することを検討しています。
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(..)
醜いですが、おそらく実行可能です。
groovy - JMeter でユーザー定義変数をインクリメントする
パフォーマンスをテストする登録 REST サービスがあります。ループ/スレッドリクエストごとに必要なパラメーター mobilenumber のみを変更する必要があります
負荷テストの一部として複数のテストにスレッド化/ループしているときに、ユーザー定義変数を (別の udv として保存された増分値によって) 増分するにはどうすればよいですか。
成功したすべての登録要求に対して jsr 233 プリプロセッサを使用しようとしています
変更するパラメーターが 1 つしかないため、csv を使用したくありません
使用できる var.get() および vars.put() 関数について読んでいますが、正しく取得できません。
次のコードを試す - コードの下に表示されるログイン
ログ:
ログによると、インクリメントは成功しますが、vars.put() は成功しませんか??
scala - Scala JSR 223 インポート型/クラス
Stuff
次の例は、 の定義が見つからないため失敗します。
ステートメント内で独自のクラスを使用できる import ステートメントが見つかりませんeval
。私は何か間違ったことをしていますか?中に使用するクラスをインポートするにはどうすればよいeval
ですか?
編集:より直接的な回答を引き出すためにコード例を明確にしました。
java - Jmeter 内で既存の Java API テストを使用する方法
バックエンドを個別にテストする既存の Java テストがあります。これらのテストは非常に精巧で、単一のユーザーとしても実行されます。これらの既存のテスト/クラス/ライブラリ/jarなどを単純に取り、それらをJMeterでラップして、コマンドライン(つまりMaven)からJMeterテストとして実行できるかどうかを知りたいです。
いくつかのリスナーや他の JMeter コンポーネントを追加するかもしれませんが、マルチスレッドではなく、JMeter が持つレポート機能がないことを除けば、テストはそのままで完璧です。
これは JSR233 を使用して実行できますか?
ライブラリが別の場所にある場合はどうなりますか? JMeter プロジェクトでそれらを使用するにはどうすればよいですか?
groovy - JMeter の Groovy スクリプト: GString 補間を使用するクロージャーが含まれている場合、エラー「''\n'' 以外を期待しています;とにかく @ 行を取得しました...」
適切に機能するクロージャーを定義するこのグルーヴィーなスクリプトがあります。
しかし、スクリプトに GString 補間を使用する別のクロージャーを追加すると。
エラーが発生します
追加された閉鎖がコメントされていたとしても。
それでも失敗します!何を与える?
java - シングルトンの別のインスタンスを作成する Scala Script Engine
ということで、Scalaでスクリプトシステムを作っているのですJSR 223
が、原因がわからないという問題に遭遇しました。
(スクリプトから) イベント リスナーを追加し、(コアから) イベントをディスパッチするメソッドを持つシングルトンのようなクラスがあります。すべてうまくいきましたが、何らかの理由で、イベントをディスパッチするときに、追加されたリスナーが消えてしまいました。
問題を再現した後、スクリプト エンジンがシングルトンの別のインスタンスを作成することがわかりました。
これが私のSingleton
クラスです:
そして、ここに私のMain
クラスがあります:
出力は次のとおりです。
スタック トレースは、スクリプト エンジンが最終的に の新しいインスタンスを作成することを示していますがSingleton
、その理由はわかりません。
ありがとうございました。