Jvm优化
Jvm
阳光帅青年
努力就有收获,let's go!
展开
-
可达性分析算法-针对的对象
可达性分析算法的基本思想,(由于该算法是JVM垃圾回收判断对象死亡的基本算法)这里,我们对上一篇讲的关于可达性分析算法做一个更加细致的研究; 首先是根节点(GC Roots):作为可达性算法的初始节点,什么样的节点可以做为根节点呢? 虚拟机栈(栈帧中的本地变量表)中引用的对象; 本地方法区中的静态属性引用对象; 方法区中的常量引用对象; 本地方法栈中的JNI(Native方法)的引用对象; 在可达性算法中,表示可达的标准为是否有引用链与之相连,这个时候存在内存中的对象只有垃圾对象和转载 2021-09-02 18:21:26 · 284 阅读 · 0 评论 -
Java中对象的逃逸分析
逃逸分析的定义 逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。 通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。 Java在Java SE 6 以及以后的版本中支持并默认开启了逃逸分析的选项。Java的 HotSpot JIT编译器,能够在方法重载或者动态加载代码的时候对代码进行逃逸分析。 逃逸分析的基本行为就是分析对象的动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用转载 2021-06-29 09:43:46 · 313 阅读 · 0 评论 -
JVM 空间分配担保机制
1.谁进行空间担保? JVM使用分代收集算法,将堆内存划分为年轻代和老年代,两块内存分别采用不同的垃圾回收算法,空间担保指的是老年代进行空间分配担保 2.什么是空间分配担保? 在发生Minor GC之前,虚拟机会检查老年代最大可用的连续空间是否大于新生代所有对象的总空间, 如果大于,则此次Minor GC是安全的 如果小于,则虚拟机会查看HandlePromotionFailure设置值是否允许担保失败。如果HandlePromotionFailure=true,...转载 2021-05-30 10:26:49 · 327 阅读 · 0 评论 -
java 对象的内存分布
在 Hotspot VM虚拟机中 ,对象在内存中体现形式主要分3 块: 对象头(Header) 实例数据(Instance Data) 对齐填充(Padding) 对象头 MarkWord:存储对象运行时的数据, HashCode、线程ID、锁状态信息、GC分代年龄等。 指针:对象指向派生对象的类。通过指针压缩,减少对象的内存使用量。 数组长度:(可有可无)只有是数组对象才有,如:Array List Map等 实例数据 实例数据:是对象真正的字段内容 对齐填充 对齐填充:JVM中规定j.原创 2020-12-31 13:44:18 · 106 阅读 · 0 评论 -
OOM异常
一,jvm内存区域 1,程序计数器 一块很小的内存空间,作用是当前线程所执行的字节码的行号指示器。 2,java栈 与程序计数器一样,java栈(虚拟机栈)也是线程私有的,其生命周期与线程相同。通常存放基本数据类型,对象引用(一个指向对象起始地址的引用指针或一个代表对象的句柄),reeturnAddress类型(指向一条字节码指令的地址) 栈区域有两种异常类型:如果线程请求的栈深度大于...转载 2019-12-23 10:52:41 · 135 阅读 · 0 评论 -
Cpu占用率高排查
1、top命令,然后按shift+p按照CPU排序,找到占用CPU过高的进程的pid 2、ps -mp pid -o THREAD,tid,time | sort -rn 获取线程信息,并找到占用CPU高的线程 3、printf "%x\n" tid 将需要的线程ID转换为16进制格式 4、jstack pid |grep "e168" -A 30 jstack命令打印出该进程下的此线程的...原创 2019-12-10 10:51:51 · 122 阅读 · 0 评论 -
JVM中工具jmap的使用
jmap <Options> pid 参数如下: -heap:打印jvm heap的情况 -histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。 -histo:live :只打印存活对象的情况 -permstat:打印permanent generation heap情况 [root@localhost ~]# jmap ...原创 2019-11-26 10:01:35 · 379 阅读 · 0 评论 -
JVM中工具jstat的使用
jstat命令命令格式: jstat [Options] vmid [interval] [count] 命令参数说明: Options,一般使用 -gcutil 或 -gc 查看gc 情况 pid,当前运行的 java进程号 interval,间隔时间,单位为秒或者毫秒 count,打印次数,如果缺省则打印无数次 Options 参数如下: -gc:统计 jdk gc时 h...原创 2019-11-26 09:53:03 · 866 阅读 · 0 评论