jvm
One_Java_Programmer
热爱编程
展开
-
jvm学习(一)
总结一下《深入理解java虚拟机》的学习java堆溢出:/** * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * */public class HeapOOM { static class OOMObject { } public static void main(String[] ...原创 2019-09-26 22:03:15 · 109 阅读 · 0 评论 -
jvm学习(二)
虚拟机栈oom代码:/*** VM Args:-Xss128k*/public class JavaVMStackSOF { private int stackLength = 1; public void stackLeak() { stackLength++; stackLeak(); } public s...原创 2019-09-26 22:14:30 · 104 阅读 · 0 评论 -
jvm学习(3)
常量池内存溢出:/*** VM Args:-XX:PermSize=10M -XX:MaxPermSize=10M*/public class RuntimeConstantPoolOOM { public static void main(String[] args) { // 使用List保持着常量池引用,避免Full GC回收常量池行为 ...原创 2019-09-26 22:59:29 · 98 阅读 · 0 评论 -
jvm学习(4)
元数据区(Metaspace)溢出代码,用大量的类去填满元数据区:/** * VM Args:-XX:MetaspaceSize=8M -XX:MaxMetaspaceSize=10M * */public class JavaMethodAreaOOM { public static void main(String[] args) { while ...原创 2019-09-27 22:31:52 · 125 阅读 · 0 评论 -
jvm学习(5)
直接内存溢出代码:/** * VM Args:-Xmx20M -XX:MaxDirectMemorySize=10M * */public class DirectMemoryOOM { private static final int _1MB = 1024 * 1024; public static void main(String[] args) thr...原创 2019-09-27 22:38:56 · 128 阅读 · 1 评论 -
jvm学习(6)
引用计数算法的缺陷代码:/** * -XX:+PrintGC 输出简要GC日志 * -XX:+PrintGCDetails 输出详细GC日志 * -Xloggc:gc.log 输出GC日志到文件 * -XX:+PrintGCTimeStamps 输出GC的时间戳(以JVM启动到当期的总时长的时间戳形式) * -XX:+PrintGCDateStamps 输出GC的时间戳(以...原创 2019-09-27 23:16:05 · 138 阅读 · 1 评论 -
hotspot学习(5)
对象模型:1、使用无句柄,引用直接保存对象的地址,提高对象的访问速度。gc时,垃圾收集器负责查找和更新适当对象的所有引用。2、对象头占用内存小3、反射创建的对象表示为普通对象,简化了VM内部的对象模型,都使用统一的对象模型,允许被垃圾收集器收集。4、线程支持抢占和多处理器...原创 2019-09-28 18:08:00 · 194 阅读 · 2 评论 -
hotspot学习(6)
垃圾收集:HotSpot 支持多种不同的垃圾收集算法,比如复制算法、标记-清除、标记-压缩,这些算法旨在满足不同的暂停时间和吞吐量要求。程序员根据自身的程序选择合适的垃圾收集算法。HotSpot垃圾收集器是一个完全准确的收集器,相比之下,有些垃圾收集器是保守的或部分准确的。尽管保守的垃圾收集很有吸引力,因为它很容易添加到没有垃圾收集支持的系统中,但它具有某些缺点。通常,保守的垃圾回收器...原创 2019-09-28 18:38:56 · 224 阅读 · 2 评论