JVM结构、GC、SpringMVC、IOC

  • 结构图

在这里插入图片描述

  • 垃圾回收 GC

java堆主要分为:年轻代和老年代,年轻代占堆总内存的1/3到1/2,被分为Eden区和两个Survivor区,Eden和Survivor占比8:1:1。老年代通常占堆总内存的2/3到1/2,用于存放生命周期较长的对象。

参数设置:
初始堆大小:-Xms size
堆最大值:-Xmx size
年轻代大小:-Xmn size
Eden和Survivor比例:-XX:SurvivorRatio=
jdk bin目录下 jconsole.exe 调优工具
visualvm工具:https://visualvm.github.io/

标记清除算法(Mark-Sweep),标记的对象越多越损耗性能,容易产生内存碎片,(比如一个内存块的大小是2,通过一次GC被标记清理,当需要一个内存块大小为1.9时那么就会产生一个0.1内存碎片因为太小而无法被使用)。

为解决内存碎片问题提出了复制算法Copying,将内存分为大小相同的两个块每次只使用其中一个,每一次GC时将其中一个块中存活的对象复制到另一个块上面,并将当前这个块全部清理。缺点:因为只有一半的内存在使用所以内存的空间利用率低,且对象存活的较多那么复制的工作量就大从而影响性能。

为了提高内存的利用空间提出标记整理算法Mark-Compact,标记完之后将存活的对象移到一端然后清理端边界以外的内存,比Mark-Sweep效率低因为其只需要标记之后然后清除对象释放内存,而整理除了标记和清理步骤外,还增加了移动操作,以及更新对象引用地址的操作。

分代收集算法,根据对象的存活生命周期划分为不同的区域(老年代、新生代)
老年代每次只有少量对象需要被回收,所以一般采用标记清理算法和标记整理算法,这根据垃圾收集器来决定,如:
CMS(Concurrent Mark-Sweep)并发标记清理收集器
G1(Garbage First)收集器:并发标记整理 Concurrent Mark-Compact

  • SpringMVC

组件:
DispatcherServlet:前端控制器,接收HTTP请求,

  • SpringIOC

IOC容器是Spring的核心框架,用于管理对象的依赖注入和生命周期,降低耦合。

  • SpringBean生命周期

1.实例化:Spring容器根据配置文件或注解创建Bean。

2.属性赋值:通过setter方法或构造函数为实例属性赋值。

3.根据Bean实现的接口做相应的操作:
a. 实现BeanNameAware接口,调用setBeanName(name)设置Bean名称
b. 实现BeanFactoryAware接口,调用setBeanFactory(beanFactory)设置Bean工厂
c. 实现ApplicationContextAware接口,调用setApplicationContext(context)设置Bean的上下文

4.初始化:调用容器初始化方法,通过init-method属性指定的方法或实现InitializingBean接口调用相应方法。
Bean实现BeanPostProcessor接口:
a.初始化前调用:postProcessBeforeInitialization
b.初始化后调用:postProcessAfterInitialization

5.应用程序中的业务使用

6.销毁:应用程序关闭时,容器调用相应的销毁方法,通过destroy-method属性指定方法或实现了DisposableBean接口的destroy()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值