程序猿洞晓
Java虚拟机那些事儿(六):HotSpot垃圾收集器参数和组合方式 Java虚拟机那些事儿(六):HotSpot垃圾收集器参数和组合方式
图中你可能也注意到了CMS和Serial Old也有连线,因为CMS收集器过程经历了四个阶段分别是初始标记、并发标记、重新标记和并发清除。在经历这四个阶段的时候,如果新的垃圾出现在标记之后,就会无法被清理,会导致浮动垃圾的堆积,只能等待下一次GC过程清理。在CMS的收集过程会预留一部分空间给用户线程运行,这个时候如果出现……
2018-08-11
Java虚拟机那些事儿(五):HotSpot垃圾收集器 Java虚拟机那些事儿(五):HotSpot垃圾收集器
G1是一款面向服务端应用的垃圾收集器,它没有新生代和老年代的概念,而是将堆划分为一块块独立的Region。当要进行垃圾收集时,首先估计每个Region 中垃圾的数量,每次都从垃圾回收价值最大的Region开始回收,因此可以获得最大的回收效率。从整体上看,G1是基于“标记-整理”算法实现的收集器,从局部(两个Region之间)上看到……
2018-08-10
Spring注解式注入依赖bean优先级 Spring注解式注入依赖bean优先级
使用注解的方式注入ban实例,在两年前的开发中,还经常看到@Resource注解,这个注解是基于JSR250标准的,现在基本很少看到使用了,取而代之的是@Autowired注解,也是官方推荐的。随着spring boot的出现,很多开发小伙伴喜欢通过config配置类加载一些bean,在加载这些bean会依赖到其他的一些bean实例……
2018-08-07
从源码的角度分析@Lazy和@Scope对IOC容器初始化影响以及IOC的总结 从源码的角度分析@Lazy和@Scope对IOC容器初始化影响以及IOC的总结
在之前的文章中说过lazy、scope对spring ioc容器的初始化影响(Spring中Lazy、Scope注解对IOC容器Bean初始化的影响分析),但是没有具体深入的说,而是通过表面数据判断。另外就是之前也写过spring ioc容
2018-08-03
Java虚拟机那些事儿(四):垃圾收集策略与算法 Java虚拟机那些事儿(四):垃圾收集策略与算法
程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。而对于 Java 堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配……
2018-07-31
Java虚拟机那些事儿(三):HotSpot虚拟机对象探秘 Java虚拟机那些事儿(三):HotSpot虚拟机对象探秘
HotSpot VM 的自动内存管理系统要求对象的大小必须是 8 字节的整数倍。而对象头部分正好是 8 字节的倍数(1 倍或 2 倍),因此,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全。所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配的。也就是说在建立一个对象时两个地方都分配内存,在堆中分配的内存……
2018-07-25
Spring AOP之aspectj切面增强过程理解 Spring AOP之aspectj切面增强过程理解
aspectj下主要有@Before、@After、@AfterReturning、@AfterThrowing、@Around几个通知的方式。在实际的开发过程中也是经常要用到的,之前只能停留在会用的层面上,为了更深入的了解这些方法执行的时机和原理,只能学习源码,这里分享出来,希望和大家共同学习进步。
2018-07-22
Java虚拟机那些事儿(二):JVM内存结构 Java虚拟机那些事儿(二):JVM内存结构
JDK 1.8 同 JDK 1.7 比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对 JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。程序计数器是一块较小的内存空间,是当前线程正在执行的那条字节码指令的地址。若当前线程正在执行的是一个本地方法……
2018-07-19
Spring IOC容器初始化基础过程源码了解 Spring IOC容器初始化基础过程源码了解
Spring IOC初始化有很多种方式,如xml方式、注解方式(也分很多不同的方式)、FactoryBean方式等等,这个在之前的博客中有写过(原文:[Spring IOC初始化bean对象创建的N种实现方式理解])。这里就其中的一种方式来理解一下整个创建bean的基本过程。
2018-07-16
死磕Java并发:深入分析synchronized的实现原理 死磕Java并发:深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以……
2018-07-14
线程池ThreadPool浅层面原理分析 线程池ThreadPool浅层面原理分析
线程池是作为程序员必备的技能,合理的使用线程池也是必须的,但是在实际开发过程中,使用线程池的参数都是复制粘贴来的,也不会去考察线程池设计是否符合实际使用场景,是否合理,这篇文章不会深入去说线程池的原理,但是基本的配置参数说明还是有的,希望能对大家开发有用。在多任务下,不采用线程池的方式实现多线程,会降低资源的消耗,降低线程创建和销毁时……
2018-07-12
Spring IOC初始化bean对象创建的N种实现方式理解 Spring IOC初始化bean对象创建的N种实现方式理解
Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下。
2018-07-10
13 / 15