-
Spring源码之容器的功能拓展-ApplicationContext
(容器的功能拓展) PS * 本文代码基本为伪代码,注释为个人理解,水平有限,如有谬误,感谢指正。 关于spring的容器,除了BeanFactory以及它的默认实现类XmlBeanFactory之外。 Spring还提供了 ApplicationContext , 它用于对 BeanFactory -
Spring源码之bean的加载
(spring 源码阅读 -- bean 的加载) 本文代码入口: \spring-framework-5.0.x\spring-beans\src\main\java\org\springframework\beans\factory\support\AbstractBeanFactory.get -
spring源码学习之设计模式
(Spring源码中用到的设计模式) 文中代码多是用于解释的伪代码,类图排版因为工具原因没有细细打磨,凑合用了。 耗时两周研究了这些设计模式,个人总结一下学习设计模式应该注意这些东西: 相关的OO(面向对象) 设计原则 首先搞清楚该模式的应用场景这非常重要 搞清楚类似设计模式的核心差异,个人认为这个 -
《深入理解Java虚拟机》(八) 记录一次OOM问题分析实战
(记录一次JVM调优实战) 一、问题分析思路 1.考虑一个问题现象,系统刚启动在访问量比较小的时候运行流畅,随着访问量提高,开始卡顿; 2.可以先排查数据库问题,例如Oracle可以检查临时表空间,慢sql统计,索引等等因素,如果依然无法解决; 3.最终再考虑JVM调优,正常情况下是不需要JVM调优 -
《深入理解Java虚拟机》(七) volatile 变量
(《深入理解Java虚拟机》volatile 变量) 概述 今天的主角是volatile变量,在讲它之前我会稍微提一些必要的前置概念,例如:Java内存模型及其相关操作;如果你对这一部分很熟悉了可以直接跳到第二部分。 一、内存模型 物理机内存模型 当物理机中进行计算任务时,处理器与物理内存之间的I/ -
《深入理解Java虚拟机》(六) 调优策略 -- 笔记
(调优案例以及策略:笔记) 一、操作文档类功能,大量大对象直接进入老年代 问题现象 操作文档类功能,大量大对象直接进入老年代,没有在Minor GC时被清理,导致老年代迅速消耗殆尽频繁进行Full GC,在服务器内存较大的情况下,Full GC会造成长时间停顿。 解决方法 通过单一Java虚拟机管理 -
《深入理解Java虚拟机》(五) JVM调优案例
(JVM调优案例) 问题 我们公司的程序是的B/S架构,工作中碰到客户提出一个问题,他们的系统最近突然会用着用着就卡死掉--浏览器访问服务器一开始会卡顿,直至最终会完全卡死没有响应。 并且客户反馈的是最近才变卡的,之前一直没有问题,现在一旦系统卡住就需要重启,对正常使用造成了严重影响。 客户的服务器 -
《深入理解Java虚拟机》(四) 调优工具、指令
(调优工具、指令) JVM 调优的概念 调优的前提是发现问题,然后通过工具定位问题并实地分析问题,最后根据问题现象选用最合适的策略优化 / 解决 问题;JVM调优的工具很多,有jdk自带的工具,例如:jvisualvm、jconsole;也有第三方的:eclipse附带的内存分析工具MAT、专业分析 -
《深入理解Java虚拟机》(三)类加载机制
@(类加载机制) 1、什么是类的加载 Java虚拟机把描述类的二进制流冲.Class文件中读到内存中,并在这个过程对加载的数据进行校验、转换解析、初始化,最终形成可以被Java虚拟机直接使用的java类型,这个过程叫做虚拟机的类加载机制。类的加载会把类的数据结构信息存放于方法区,并在堆区创建一个ja -
《深入理解Java虚拟机》(二) GC 垃圾回收机制
@(GC 垃圾回收机制) 一、概述 线程独有的程序计数器、JVM栈、本地方法栈,他们的生命周期与线程一致,实现了内存自动清理,不需要GC进行内存管理;线程共享的方法区和堆区,其中方法区内存回收的条件非常苛刻,所以GC内存回收主要发生在堆上,程序运行期间这部分共享区域的内存分配和使用都是动态的; 二、