jvm
虚拟机
yanph123
作者不懒,留下了简介
展开
-
运行时数据区
1.程序计数器:一块很小的内存区域,是线程私有的,看作当前线程所执行的字节码的行号指示器; 2.java虚拟机栈:和程序计数器相同,都是每个线程私有的,每个方法运行是都会创建一个帧栈,里面包含: 局部变量表、 操作数栈、 动态链表、 方法出口等信息。一个方法的调用直至结束,就是一个入栈和出栈的过程; 3.本地方法栈:和虚拟机栈类似,不同的是虚拟机栈服务java方法(字节码),本地方法栈服务于native 方法修饰的方法; 4.堆:虚拟机中管理最大的一块内存,是所有线程共...原创 2020-07-16 10:43:00 · 121 阅读 · 0 评论 -
java对象的创建过程
1.首先在常量池查找是否有该对象的应用符号; 2.然后判断该类是否加载、编译、初始化; 3.没有则加载、编译、初始化; 4.给对象分配堆内存(指针碰撞和空闲列表); 5.把对象分配到的内存初始化设置为0(不包含 Object header),目的为了保证对象的实例字段在java中可以不赋值就可以使用; 6.对对象进行必要设置,设置对象头(所属类的实例,如何找到元数据信息,对象的哈希码,对象的GC分代年龄等和根据当前的运行状态的不同,是否启用偏向锁等); 7.以上虚拟机层面已经创建完成,等java原创 2020-05-22 23:31:32 · 146 阅读 · 0 评论 -
垃圾收集算法
一. 标记 - 清除算法: 分为“标记”和 “清除”两个阶段; 方案: 1.标记所有需要回收的对象; 2.统一回收被标记的对象; 缺点: 1.效率问题,“标记”和“清除”效率都不高; 2.空间问题,被“清除”后会产生大量的不连续的内存碎片(当大对象找不到足够的连续空间,就得提前GC ); 二. 复制算法: 方案: 将内存分为两块,每次只使用一块。当一块用完时,就将还存活的对象复制到另外一块,继续使用另外一块; 优化: 1.无需考虑...原创 2020-05-22 23:32:18 · 108 阅读 · 0 评论 -
垃圾回收器
并行收集:指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。 并发收集:指用户线程与垃圾收集线程同时工作(不一定是并行的可能会交替执行)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上。 吞吐量:即CPU用于运行用户代码的时间与CPU总消耗时间的比值(吞吐量 = 运行用户代码时间 / ( 运行用户代码时间 + 垃圾收集时间 ))。例如:虚拟机共运行100分钟,垃圾收集器花掉1分钟,那么吞吐量就是99%; 新生代收集器: Serial: 最基...原创 2020-05-22 23:35:15 · 113 阅读 · 0 评论 -
jvm 调优参数
参考链接: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html 功能开关: 参数 限制 默认值 说明 示例 -XX:-AllowUserSignalHandlers linux、Solaris 不启用 允许为java进程安装信号处理器,信.原创 2020-05-22 23:36:56 · 178 阅读 · 0 评论