次のような静的メソッドを呼び出すと、次のようになります。
Something.action();
インスタンスが作成されないので、静的メソッドのクラスはどのくらいの期間メモリに保持されますか?
同じメソッドを呼び出すと、インスタンスが存在しないため、呼び出しごとにクラスが再ロードされますか?
また、呼び出されたときに個々の静的メソッドのみがロードされますか、それとも1つの静的メソッドのみが使用される場合でも、クラスのすべてのメソッドと静的メソッドがメモリにロードされますか?
permgenspaceのガベージコレクションを構成していない限り、クラスはvmが終了するまでメモリに残ります。フルクラスには、すべての静的メソッドがロードされます。
そのクラスをロードしたクラスローダーがメモリにとどまるまで、クラスはメモリにとどまります。したがって、クラスがシステムクラスローダーからロードされる場合、私が知る限り、クラスがアンロードされることはありません。
クラスをアンロードする場合は、次のことを行う必要があります。
一部の構成では、呼び出しを行う前にクラスがロードされます。BES (Borland Enterprise Server) を使用しましたが、アプリケーションの起動時にすべての参照クラスが再帰的にロードされる Solaris 実動サーバーに問題がありました。つまり、アプリのメイン クラスが読み込まれたときに、アプリ サーバーはそのクラスのインポート セクションで参照されているすべてのクラスを ... 再帰的に読み込みました。
余談ですが、非常にメモリに制約のある環境で実行している場合や、大量の不要なクラスをロードしている場合を除き、メモリにロードされたクラスのメモリ使用量についてあまり気にする必要はありません。
呼び出し元クラスがロードされるときに、Somethingクラスがロードされる必要があります。そして、krosenvoldが言ったように、VMが終了するまでそこにとどまります。