主页

WebLogic Metaspace OOM 解决案例

WebLogic Metaspace OOM 解决案例 一、前言 ​ 估计也只有我这么惨了,都0202年了还在用weblogic这种上古神器。故事要从前段时间说起,至于是多久时间,我也忘记了。 ​ 某日,线上发布版本,在weblogic控制台更新的时候,直接卡死无响应。一打开日志一瞧,好家伙,OOM了,还是个metaspace的OOM。 ​ 这玩意儿就有点奇怪了,metaspace按道理是存放的类信息,字面量(Literal)、类静态变量(Class Static)、符号引用(Symbols Reference)等相关信息。类相关信息在metaspace里面又分为2块区域,Klass MetaSpace和NoKlass MetaSpace。这就不细讲了,不然扯不完。 ​ 也就...

阅读更多

spring-boot2 idea jsp 404 问题探究(tomcat启动流程探究)

一、前言 ​ 最近有小朋友在学习spring boot的时候遇到了一个问题,按照教程上操作始终是404.于是就百事不得其解.问我的时候,我也一脸蒙B,毕竟jsp这玩意儿好久都没碰到过了,之前碰jsp的时候还是在ssh的时候. ​ 既然遇到问题就来分析一下呗,趁着最近在看spring的源码. 二、案发现场 ymal: server: port: 9090 spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp pom: <dependencies> <dependency> <groupId>org.sp...

阅读更多

[断点分析之spring-ioc]-bean属性填充与初始化(九)

一、前言 ​ bean是创建好了,但还需要一些属性填充,初始化等操作. // 属性填充 populateBean(beanName, mbd, instanceWrapper); // 初始化bean exposedObject = initializeBean(beanName, exposedObject, mbd); 二、populateBean protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) { // 跳过 null bean 赋值 if (bw == null) { if (mbd.hasProperty...

阅读更多

[断点分析之spring-ioc]-bean的创建(八)

一、前言 ​ 经过前面的一顿折腾,终于要到了扯开遮羞布的时候了. @Test public void testSpringLoadXml(){ // A BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); // B final MyTestBean testBean = factory.getBean("myTestBean",MyTestBean.class); final String testStr = testBean.getTestStr(); System.out.println(test...

阅读更多

[断点分析之spring-ioc]-BeanDefinitionHolder注册(七)

一、前言 ​ 通过前面大批量的工作,终于要到注册BeanDefinitionHolder这一步了.当然还是通过一下代码作为入口进行分析. protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { // 解析xml元素 BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); if (bdHolder != null) { // 装饰bean bdHolder = delegate.decorateBeanDefinitionIfRequired(e...

阅读更多

[断点分析之spring-ioc]-BeanDefinitionHolder装饰(六)

一、前言 ​ 在xml标签解析完之后会产生一个BeanDefinitionHolder对象,紧接着就来谈谈,spring用这个对象来干嘛吧. //DefaultBeanDefinitionDocumentReader.java protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { // 解析xml元素 BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); if (bdHolder != null) { // 装饰 bdHolder = d...

阅读更多

[断点分析之spring-ioc]-bean标签解析(五)

一、前言 ​ 分析了import标签、alias标签,顺势引出了bean标签,只不过bean标签逻辑较为复杂没有记录完. 二、从BeanDefinitionParserDelegate开始 // BeanDefinitionParserDelegate @Nullable public BeanDefinitionHolder parseBeanDefinitionElement(Element ele) { return parseBeanDefinitionElement(ele, null); } /** * Parses the supplied {@code <bean>} element. May return {@code null} ...

阅读更多

[断点分析之spring-ioc]-xml标签解析(四)

一、前言 ​ 接上文,分析了spring 把 xml 文件读取到内存中,并生成一个document对象,然而离创建bean还比较遥远.在xml中定了bean该如何创建的规则,而spring也是遵循xml中的标签所描述规则来进行创建bean.接下来就是要分析,spring是如何解析这些标签的. 二、分析 ​ 还是常规套路,从下面的测试代码开始. @Test public void testSpringLoadXml(){ BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); final MyTestBean testBean...

阅读更多