
JVM
文章平均质量分 96
程序员Seven
欢迎到访在线网站:www.seven97.top
展开
-
一起了解早期使用的各种垃圾收集器
以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。指用户线程与垃圾收集线程同时工作(不一定是并行的可能会交替执行)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上即CPU用于运行用户代码的时间与CPU总消耗时间的比值(吞吐量 = 运行用户代码时间 / ( 运行用户代码时间 + 垃圾收集时间 )),也就是。例如:虚拟机共运行100分钟,垃圾收集器花掉1分钟,那么吞吐量就是99%原创 2024-11-07 08:15:00 · 996 阅读 · 0 评论 -
一文夯实垃圾收集的理论基础
JVM 在进行 GC 时,并非每次都对堆内存(新生代、老年代;方法区)区域一起回收的,大部分时候回收的都是指新生代。针对 HotSpot VM 的实现,它里面的 GC 按照回收区域又分为两大类:部分收集(Partial GC),整堆收集(Full GC)部分收集:不是完整收集整个 Java 堆的垃圾收集。其中又分为:新生代收集(Minor GC/Young GC):只是新生代的垃圾收集老年代收集(Major GC/Old GC):只是老年代的垃圾收集。原创 2024-11-05 08:15:00 · 1384 阅读 · 0 评论 -
说说Java的类加载机制?究竟什么是双亲委派模型?
很多人都有个误区:双亲委派机制不能被打破,不能使用自定义类加载器加载java.lang.String但是事实上并不是,只要重写ClassLoader的loadClass()方法,就能打破了。@Override//只对MyClassLoader和String使用自定义的加载,其他的还是走双亲委派} else {//urls指定自定义类加载器的加载路径url, url3Class<?Class<?//false。原创 2024-11-04 08:15:00 · 1122 阅读 · 0 评论 -
对象一定分配在堆中吗?聊聊TLAB和逃逸分析技术
逃逸分析(Escape Analysis),是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围,从而决定是否要将这个对象分配到堆上。一个对象在方法中被定义后,对象如果只在方法内部使用,则认为没有发生逃逸;(没有发生逃逸的对象,会在栈上分配)当一个对象在方法中被定义后,它被外部方法所引用,则认为发生了逃逸。如何快速的判断是否发生了逃逸分析?看new的对象实体是否有可能在方法外被调用。原创 2024-10-30 22:16:25 · 912 阅读 · 0 评论 -
聊聊jvm的内存结构, 以及各种结构的作用
定义:Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境)线程私有的,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址。定义:每个线程在创建的时候都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次 Java 方法调用,是线程私有的,生命周期和线程一致。作用:主管 Java 程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回。特点:每个线程运行需要的内存空间,称为虚拟机栈。原创 2024-10-29 08:15:00 · 1531 阅读 · 0 评论