問題タブ [handles]

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 に答える
785 参照

java - Java ハンドル (mutex ?) がリークされ、解放されない (ファイル ハンドルではない)

長時間実行される複雑な Java アプリケーションがあります。アプリケーションは、ほとんどニュアンスを付けずに、同じ操作を何度も繰り返します。私の問題は、Windows タスク マネージャーが Java プロセス (ファイル ハンドルではない) の多くのリーク ハンドルを表示することです。

アプリケーションをストレスの多い状態でしばらく実行すると、アプリケーションが動かなくなったり、消えたり、ファイルを開こうとしたときに FileNotFoundException が発生したりするなど、奇妙なエラーが発生します (「要求されたサービスを完了するにはシステム リソースが不足しています」)。

Windows タスク マネージャーを使用して問題を確認したところ、java.exe プロセスのハンドル数が急速に増加していることがわかりました。スレッドの数は増加せず、使用される RAM の量も増加しません。

次に、これらのハンドルが何であるかを理解するために、SysInternal の Process Explorer を使用しました。これらはファイル ハンドルではなく、\BaseNamedObjects\??????n という名前の「Mutant」タイプの何千ものハンドルであることがわかります。Web のいくつかのサイトによると、Mutant in Process エクスプローラーは Mutex を意味します。私の Java アプリは意図的にミューテックスを作成しません。

次のステップは、プロファイリング ツールを使用して、リークの原因を絞り込むことでした。「J Optimizer」と「Java VirtualVM」を使用しました。両方のアプリケーションで、漏れているハンドルを検出できません。メモリリーク検出器がありますが、ハンドルのリークを検出する方法が見つかりません。

私の質問は次のとおりです。この問題をどのようにデバッグできますか? ハンドルの漏れの原因を特定するにはどうすればよいですか?

ありがとうございました

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

function - Matlab で 2 つのハンドルを接続する

2 つのaxes.handles を接続して、一方のマウス ボタンをクリックすると、もう一方も最初のボタンと同じように動作するようにしたいと考えています。マウスがクリックされたときにやりたいことを実行する外部関数があります。1 つの軸がクリックされたときに同じことを行うように、GUI で 2 つのハンドルを更新する必要があるだけです。

メイン GUI で

これは、mousemotion を呼び出してメイン GUI にコールバックする外部関数です。

どんな助けにも感謝します。私は質問を伝えようとするのが苦手です。誰かが助けてくれることを願っています。ありがとう。

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

matlab - MATLAB GUIコールバックが別のコールバックの値を設定していませんか?

1つのボタンを押して値を設定し、別のボタンを押して変数の値を出力したいと思います。次のコードを使用して最初にボタンを押しても値が設定されていないようです。何故ですか?

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

c++ - RPCランタイムによって割り当てられたスレッドハンドルを再利用するにはどうすればよいですか?

少し背景:

RPCを使用してネットワーク経由で通信するWindowsプログラムに取り組んでいます。ネットワーク接続は継続的に確立および切断されます。RPC呼び出しは同期的ですが、同時に動作している複数のクライアントスレッドがあります。プログラムは対称的です。つまり、両側がクライアントとサーバーとして機能し、まったく同じソフトウェアを実行しています。これは、標準のWindowsAPIを使用してC++で実装されます。

問題:

Process Explorerによって報告されるスレッドハンドルの数は、時間の経過とともに増加します。スレッドはRPCランタイムによって要求を処理するために作成されているように見えますが、スレッドが再利用されたときにハンドルが常にクリーンアップされるとは限りません。

特に、送信するデータが多い場合や、同時に多くの通話が発生している場合に増加します(これら2つの要素は密接に関連しており、どちらが適切かはわかりません)。

アクティブなサーバーは、数日間で数千の未使用のスレッドハンドルを構築できますが、常に20を超えるスレッドを使用することはありません。

質問:

顧客のサイトで安定性の問題を引き起こしている可能性があるため、ハンドル数が増えないようにするにはどうすればよいですか?

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

matlab - 自分自身を呼び出す関数/スクリプトでの「値の設定」の代替

if ステートメントの条件が false の場合に自分自身を呼び出すスクリプトがあります。ユーザーが定義する反復の最大回数は、最大 20 回です。

問題は、アルゴリズム自体の内部で変化する変数があり、if ステートメントの条件が false の場合、プロセス全体が最初からやり直すことです。問題は、再起動時に行われる新しい計算は、最初の値ではなく、最後に計算された値に依存する必要があるということです。この時点で、set-get 関数を使用して目的を達成しています。設定値基準の問題は、実行のたびに GUI が更新されることであり、これには非常に時間がかかります。どんなアイデアでも大歓迎です。以下は動作するコードですが、長いです。これは実際のスクリプトの非常に短い要約ですが、目的は果たしていることに注意してください。

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

c# - この P/Invoke ユース ケースでの SafeHandles の正しい使用

不透明なハンドルと内部参照カウントを使用するネイティブ Dll を使用して C# で作業すると、次の P/Invoke シグネチャがあります (すべて DllImport 属性で装飾されています)。

これらの呼び出しの意味は次のとおりです。

  1. 既存のハンドル B から不透明な型 A へのポインター/ハンドルを取得します。返されたハンドルの内部参照カウントは影響を受けません。

  2. A の新しいハンドルを作成します。内部参照カウントは事前にインクリメントされており、関数 4 を使用してクライアントがハンドルを解放する必要があります。そうしないと、リークが発生します。

  3. ハンドル A の参照カウントを内部的に増やすように dll に指示します。これにより、関数 1 で取得したハンドルを dll が内部的に解放しないことが保証されます。

  4. ハンドルの参照カウントを減らすように dll に指示します。ハンドルの参照カウントを増やした場合、または関数 2 を介して取得した場合に呼び出す必要があります。

  5. ハンドルで何らかの操作を行う

IntPtr を SafeHandle の独自のサブクラスに置き換えたいと思います。新しいハンドルを作成してハンドルを取得するときの手順は明らかです。ハンドルの参照カウントは dll 内で事前にインクリメントされているため、SafeHandle の Release 関数をオーバーライドして releaseHandleToA(handle) を呼び出します。この新しいクラス「MySafeHandle」を使用して、上記の P/Incvoke シグネチャを次のように変更できます。

ただし、ここにはエラーがあります。関数 1 では、取得したハンドルの参照カウントが増加していないため、ハンドルを解放しようとするとエラーになります。

したがって、次のように、getHandleOfA 呼び出しがすぐに addRefHandleToA とペアになっていることを常に確認する必要があります。

これは安全ですか?

編集:まあ、それは明らかに安全ではありません.addRefHandleToA(safeHandle); 失敗する可能性があります。安全にする方法はありますか?

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

perl - Perl でハンドルとしてクロージャーを開く

だから私はこのクレイジーな考えを持っていました。現在、次のように Text::CSV_XS を使用して Word でテーブルを生成しています。

しかし、次のようなことができればもっとクールです。

私の質問は$something、2 番目のコード サンプルをどのように取得するか、また、クロージャをハンドルのように見せるにはどうすればよいかということです。

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

c# - ハンドル (HttpApplication) メソッドを VB.NET から C# に移行しますか?

一部のコードを VB.NET から C# (4.0) に移行しています。

私は次のような構造体を見つけます:

このような動作を C# に変換する最も簡単な方法は何ですか?

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

.net - Visual BasicのWithEventsは、オブジェクトへの参照を変更するときにEventHandlerを保持しますか?

WithEventsVisual BasicEventHandlerでは、オブジェクトへの参照を変更するときにsを保持しますか?

ボタンを宣言し、イベントを発生させたとしましょう。

今、私はイベントハンドラーを購読しています:

以下に示すようにボタンオブジェクトのインスタンスを変更しても、DoClick()関数は引き続き呼び出されますか?