getInstanceの実行中にOutOfmemoryエラーが発生しました。私はスレッドダンプをチェックし、スレッドがブロックされていることを発見しました(getInstanceでモニターロックを待っています)。OutOfMemoryエラー:静的メソッド内の同期ブロック
私はマルチスレッドで非常に初心者です。以下の実装が正しいかどうか誰にも教えてください。そうでない場合は、どのように改善できますか?
class MyClass {
private static MyClass instance = new MyClass();
public static MyClass getInstance() throws Exception {
synchronized (instance) {...}
}
public static MyClass clearInstance() throws Exception {
synchronized (instance) {...}
}
}
静的メソッド内の非静的フィールドをどのように参照できますか? – shizhz
@shizhz ..申し訳ありませんがコードを更新しました! –
メソッド 'getInstance'と' clearInstance'の実装を投稿すると良いでしょう。そして問題を再現する方法:-) – shizhz