spring bean 生命周期和 ? 作用域? spirng bean 相互依赖? jvm oom ? jvm 监控工具? ThreadLocal 原理

时间:2023-03-08 19:25:29

1. spring bean 生命周期

  1. 实例化一个bean ,即new

  2. 初始化bean 的属性

  3. 如果实现接口 BeanNameAware ,调用 setBeanName

  4. BeanFactoryAware  调用 setBeanFactory

  5. ApplicationContextAware    调用 setApplicationContext

  6. BeanPostProcesser 调用 postProcesserBeforeInitialization

  7. 调用 init-method

  8 BeanPostProcesser 调用  postProcesserAfterInitialization

  9. 在容器关闭时,如果继承了  DisposableBean 接口 ,调用 destory 方法

  10.  调用 destory-method

oom?

  java.lang.OutOfMemoryError:  java head space  堆内存溢出

  java.lang.OutOfMemoryError: Permgen space java永生代溢出, 即方法去溢出,一般是因为出现大量的Class和jsp ,或者采用cglib 反射机制的情况,

  此种情况可以通过更改方法区的大小来解决,使用类似-XX:PermSize=64m -XX:MaxPermSize=256m的形式修改。另外,过多的常量尤其是字符串也会导致方法区溢出。