初期コンテキストの読み込み中に Bean をインスタンス化する際に、奇妙なスプリング動作を発見しました。大規模な ML モデルをロードする Bean がありました。メモリが不足しているため、Bean は Out java OutOfMemoryError
java heap space 例外をスローしてインスタンス化に失敗しました。ただし、これによってアプリケーションのインスタンス化が停止されるわけではなく、アプリケーションのロードが続行されます。
なぜこれが起こるのですか?これは期待されていますか?
スプリングをチェックしAbstractAutowireCapableBeanFactory
、
try {
// Mark this bean as currently in creation, even if just partially.
beforeSingletonCreation(beanName);
// Give BeanPostProcessors a chance to return a proxy instead of the target bean instance.
instance = resolveBeforeInstantiation(beanName, mbd);
if (instance == null) {
bw = createBeanInstance(beanName, mbd, null);
instance = bw.getWrappedInstance();
}
}
finally {
// Finished partial creation of this bean.
afterSingletonCreation(beanName);
}
コメント付きで例外を黙って消化します// Finished partial creation of this bean.
これはアプリケーションの安定性に影響しませんか? なぜそのように設計されているのですか?
または、何か不足していますか?