内存分配与回收策略

对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置。大多数情况下,对象在新生代 Eden 区中分配。当 Eden 区没有足够空间进行分配时,虚拟机……

ORM框架之Mybatis:基础配置

对象关系映射(ORM Obeject Relational Mapping),ORM模型就是数据库的表与简单Java对象 (POJO)的映射模型,它主要解决数据库数据和POJO对象的相互映射。早期的时候Hibernate使用的比较多,但是由于过于笨重,近几年慢慢的被Mybatis替代了。可以说现在百分之九十以上的公司都是用的Mybatis。

http基础知识点了解一下

在 OSI 七层模型中,HTTP协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了 HTTP 协议。使用 HTTP 协议时,客户端首先与服务端的 80 端口建立一个 TCP 连接,然后在这个连接的基础上进行请求和应答,以及数据的交换。HTTP 有两个常用版本,分别是 1.0 和 1.1。主要区别在于 HTTP 1.0 中……

HotSpot垃圾收集器参数和组合方式

图中你可能也注意到了CMS和Serial Old也有连线,因为CMS收集器过程经历了四个阶段分别是初始标记、并发标记、重新标记和并发清除。在经历这四个阶段的时候,如果新的垃圾出现在标记之后,就会无法被清理,会导致浮动垃圾的堆积,只能等待下一次GC过程清理。在CMS的收集过程会预留一部分空间给用户线程运行,这个时候如果出现……

HotSpot垃圾收集器

G1是一款面向服务端应用的垃圾收集器,它没有新生代和老年代的概念,而是将堆划分为一块块独立的Region。当要进行垃圾收集时,首先估计每个Region 中垃圾的数量,每次都从垃圾回收价值最大的Region开始回收,因此可以获得最大的回收效率。从整体上看,G1是基于“标记-整理”算法实现的收集器,从局部(两个Region之间)上看到……

Spring注解式注入依赖bean优先级

使用注解的方式注入ban实例,在两年前的开发中,还经常看到@Resource注解,这个注解是基于JSR250标准的,现在基本很少看到使用了,取而代之的是@Autowired注解,也是官方推荐的。随着spring boot的出现,很多开发小伙伴喜欢通过config配置类加载一些bean,在加载这些bean会依赖到其他的一些bean实例……

从源码的角度分析@Lazy和@Scope对IOC容器初始化影响以及IOC的总结

在之前的文章中说过@Lazy、@Scope对spring IOC容器的初始化影响,但是没有具体深入的说,而是通过表面数据体现判断。另外就是之前也写过spring IOC容器初始化的源码分析,这里算是前两篇文章的续集,也是对其补充和做一个总结性的结论。这里就直接进入主题,分别使用@Lazy和@Scope("prototype")来修饰……

垃圾收集策略与算法

程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。而对于 Java 堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配……

HotSpot虚拟机对象探秘

HotSpot VM 的自动内存管理系统要求对象的大小必须是 8 字节的整数倍。而对象头部分正好是 8 字节的倍数(1 倍或 2 倍),因此,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全。所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配的。也就是说在建立一个对象时两个地方都分配内存,在堆中分配的内存……

Spring AOP之aspectj切面增强过程理解

aspectj下主要有@Before、@After、@AfterReturning、@AfterThrowing、@Around几个通知的方式。在实际的开发过程中也是经常要用到的,之前只能停留在会用的层面上,为了更深入的了解这些方法执行的时机和原理,只能学习源码,这里分享出来,希望和大家共同学习进步。