jvm
以千
这个作者很懒,什么都没留下…
展开
-
java native memory tracking
jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]# summary: 分类内存使用情况.# detail: 详细内存使用情况,除了summary信息之外还包含了虚拟内存使用情况。# baseline: 创建内存使用快照,方便和后面做对比# summary.diff: 和上一次baseline的s..原创 2020-09-05 15:38:02 · 1904 阅读 · 0 评论 -
堆溢出和栈溢出
jvm堆溢出和栈溢出一、jvm堆溢出1、介绍在jvm运行java程序时,如果程序运行所需要的内存大于系统的堆最大内存(-Xmx),就会出现堆溢出问题。2、案例// 介绍:执行该段代码需要大于10m内存空间public class HeadOverflow { public static void main(String[] args) { List<Object> listObj = new ArrayList<Object>...转载 2020-08-26 17:31:08 · 5050 阅读 · 0 评论 -
Shallow Heap 和 Retained Heap的区别
Shallow SizeShallow Size是对象本身占据的内存的大小,不包含其引用的对象。对于常规对象(非数组)的Shallow Size由其成员变量的数量和类型来定,而数组的ShallowSize由数组类型和数组长度来决定,它为数组元素大小的总和。Retained SizeRetained Size=当前对象大小+当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B->C,C就是间接引用) ,并且排除被GC Roots直接或者间接引用的对象换句话说,Re转载 2020-08-26 17:31:28 · 966 阅读 · 0 评论 -
Class的生命周期
Class的生命周期就是指一个class文件(字节码)从加载到卸载的全过程。当一个类被装载、连接、初始化后,它的生命周期就开始了,当代表该类的Class对象不再被引用、即已经不可触及的时候,Class对象的生命周期结束。那么该类的方法区内的数据也会被卸载,从而结束该类的生命周期。一个类的生命周期取决于它Class对象的生命周期,经历加载、连接、初始化、使用、和卸载五个阶段。 类的加载(转载 2017-12-01 15:12:25 · 1953 阅读 · 0 评论 -
jvm内存模型
(1)java虚拟机栈线程私有方法执行时会创建一个栈帧, 保存了需要的局部变量表, 操作数栈, 动态链接, 方法出口等信息线程请求的栈深度>JVM允许的深度时,报StackOverflowError;大多数的JVM可以动态扩展内存,如果无法申请到足够的内存时,报OutOfMemoryError;虚拟机栈:和程序计数器一样,都属于线程私有,生命周期与线程相同,描述的是java方法原创 2017-12-01 15:23:22 · 239 阅读 · 0 评论 -
java GC回收机制
转自:http://www.cnblogs.com/laoyangHJ/articles/java_gc.html详细介绍Java垃圾回收机制垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再使用的对象。GC通过...转载 2018-02-08 10:11:19 · 247 阅读 · 0 评论 -
GC年代算法
(1)堆空间分为老年代和年轻代(2)年轻代分为伊甸园区, from幸存者区, to幸存者区(3)系统在伊甸园区创建对象, 这个区满了, 会触发一次young gc,把伊甸园区所有能用的对象都复制到from区(4)然后继续在伊甸园区创建对象, 当伊甸园区满了之后, 再出发young gc,会将伊甸园区和from区所有存活对象复制到to区(5)再下一次young gc是将伊甸园区和to区中的存活对象复...原创 2018-02-08 10:40:22 · 302 阅读 · 0 评论