一部の顧客によると、Java アプリケーションは、Windows XP 互換モードの Windows 7 で高速に実行されますが、なぜですか?
私自身は問題を抱えているようには見えませんが、何もしていないのにアプリケーションが 100% の CPU を消費しているように見えます。exe ファイルまたは Java を Windows XP 互換モードに呼び出すバッチ ファイルのプロパティを設定するだけで修正されます。それはありえますか?
一部の顧客によると、Java アプリケーションは、Windows XP 互換モードの Windows 7 で高速に実行されますが、なぜですか?
私自身は問題を抱えているようには見えませんが、何もしていないのにアプリケーションが 100% の CPU を消費しているように見えます。exe ファイルまたは Java を Windows XP 互換モードに呼び出すバッチ ファイルのプロパティを設定するだけで修正されます。それはありえますか?
明確な答えはありませんが、現場で何が起こっているかを正確に診断する方法にすぎません。
どのプロセスが CPU を消費しているか、そのプロセスが何を行っているかを正確に確認する必要があります。たとえば、実行されたシステム コールを監視することによって確認する必要があります。Process ExplorerやProcess Monitorなどのsysinternalsツールを使用すると、問題の可能性についての手がかりが得られるはずです。少なくとも、XP 互換モードがある場合とない場合の実行プロファイルを比較できます。
Java アプリケーション自体に問題がある可能性があるため、Netbeans Profilerなどのツールを使用して JVM のプロファイリングを試してみてください。おそらく、コードは、ディレクトリ構造や環境変数など、Windows 7 では存在しないか変更された古い Windows XP 固有のものに依存している可能性があります (ただし、独自のインストールで保持/再適用しました)... 不適切なエラー処理と無限ループにつながりますたとえば、再試行回数。
ネイティブの Windows プロファイラーもオプションの 1 つかもしれませんが、JVM ソース コードなしで分析するのは非常に困難であり、JIT のために Java コードが関係している場合です。
直接的な解決策はありませんが、あなたの質問はかなりオープンエンドです。
顧客がこれを一貫して再現できる場合は、リモート アシスタンス リクエストを送信して、デスクトップにアクセスできるかどうかを確認できます。次に、少なくとも問題の動作を確認し、他の人が言及したツールを使用して自分のマシンでデバッグしてみてください。
内部でのタスクの切り替えが原因です。互換モードでの Windows XP でのタスクの切り替えは、Windows 7 に比べて多くなっています。ファイアウォールが原因である可能性もあります。Windows 7 でファイアウォールの状態を確認します。