
JVM基础
谈胖胖
码农
展开
-
GC算法
简介:JVM中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。对象存活判断:引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象...原创 2019-02-28 08:18:31 · 2563 阅读 · 1 评论 -
垃圾回收器
JVM的垃圾回收器大致分为六种类型:1.Serial收集器串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记-压缩;垃圾收集的过程中会Stop The World(服务暂停)。参数控制:-XX:+UseSerialGC串行收集器2.串行:ParNew收集器ParNew收集器其实就是S...原创 2019-02-28 09:08:39 · 2311 阅读 · 2 评论 -
JVM运行时内存结构
主要结构:堆内存、方法区、栈(说明:基于JDK1.7)堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配; 方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆); 栈又分为java虚...原创 2019-02-26 08:20:52 · 6380 阅读 · 5 评论 -
类的加载过程
1.类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持 Java 语言的运行...原创 2019-03-03 19:45:49 · 3118 阅读 · 1 评论 -
关于JAVA的常见内存溢出问题
set CATALINA_OPTS=-Xms128M -Xmx256Mset JAVA_OPTS=-Xms128M -Xmx256M或者把%CATALINA_OPTS%和%JAVA_OPTS%代替为-Xms128M -Xmx256M原创 2019-07-07 21:44:53 · 2448 阅读 · 2 评论