http://processhacker.sourceforge.netのようなツールを使用してランタイムアプリケーションのメモリを調べることができるjavaプロセスの問題について、最近私はつまずきました。ツール - アプリケーションで認証に使用されたパスワードが表示されます。問題を調査したところ、パスワードは使用後にゼロになっているようです。 Java Mission Control(GCが無効)を使用してヒープダンプを行い、パスワードを取得できるかどうかを確認しようとしました。 Eclipseのメモリツールを使用した私のような単純なクエリを実行しました:プロセスメモリのパスワードはヒープダンプにはありません
SELECT * FROM char[] c WHERE toString(c).startsWith("mypasswordsample")
しかし、それはすべての結果が得られなかった、とパスワードは時間かそこら後もプロセスのハッカーで見えました。 GCを有効にしてヒープダンプを実行すると、プロセスのハッカーはパスワードを見つけられなくなったようです。
舞台裏でJVMは何をしていますか?ライブオブジェクトでパスワードが見つからないのはなぜですか?このパスワードがどこに保存されているのか、誰が作成したのか、なぜゼロにしていないのかを確認するために何らかのダンプを実行できますか?
"誰がそれを作成したのですか?なぜゼロ化されなかったのですか" - それは完全にアプリケーションにあります。その質問に対するメモリダンプの回答 – f1sh
あなたは正しいですが、属性の名前やコードで問題を追跡するのに役立つ何かの名前を見つけることを望んでいました。 –
パスワードのデータは、まだアクティブではない生き残りスペースに存在する可能性があります。 YoungGen、ネイティブメモリ、またはhに応じて他の場所それは使用され、クリアされます。関連するコードを提供するかどうかは簡単に言えます。 Process Hackerはデータを検出したアドレスを表示しますか? – apangin