随笔分类 - JVM虚拟机
垃圾回收器搭配和调优
摘要:由于Java11中ZGC的出现,尽量不要对GC调优的研究下太多功夫,对未来来说,这是贬值的。 新生代的垃圾回收器 收集器 算法 收集器类型 说明 适用场景 Serial 复制算法 单线程 进行垃圾回收时,须暂停所有工作线程,知道回收完成 简单高效,适合内存不大的情况 ParNew 复制算法 多线程并
JVM的逃逸分析
摘要:对象一定分配在堆中吗? JVM通过逃逸分析,那些逃不出方法的对象会在栈上分配。 什么是逃逸分析? EscapeAnalysis,逃逸分析,指的是虚拟机在运行期通过计算分析将原本在堆上分配的对象改成在栈中分配,这样的好处是栈上分配的对象随着线程的结束而自动销毁,不依赖于GC,可以降低垃圾收集器运行的频
简单理解垃圾回收
摘要:什么是垃圾回收? 垃圾回收的是什么? 如何判断为垃圾? 垃圾是怎样被回收的? 垃圾回收哪些区域的内存? 什么是垃圾回收 垃圾回收就是将被虚拟机视为垃圾的对象所占的内存释放掉。 垃圾回收的是什么 回收的是对象所占的内存 如何判断为垃圾 在垃圾收集器对堆内存进行回收前,会先判断哪些对象还在“存活”,哪些
类加载机制和双亲委派模型
摘要:什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构。 类的生命周期 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段
JVM运行时数据区
摘要:JVM运行时数据区 线程共享 JAVA堆 首先如果不指定堆的大小,取决于电脑内存,可使用jmap -heap pid来确认。默认大小为内存的四分之一。 -Xms堆的初始大小,-Xmx堆的最大值,-Xmn新生代的大小。堆分为新生代和老年代两块内存,默认新生代和老年代占比为1:2。 几乎所有的对象都在堆