![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm性能调优
Michael_Chou_Rider
点滴积累
展开
-
JVM介绍
什么是JVM 1.软层面的机器翻译:我们编写的java文件,编译后会被编译为class文件,之后会被类加载器加载到JVM里面,而JVM则把他翻译为计算机可以读懂的语言 2.内存管理(GC),Java对比与C,C++这些语言最大的优势就是可以实现GC内存回收。 Java运行时数据区 1.Java运行时数据区包括: 程序计数器,虚拟机栈,本地方法方法栈,方法区,堆 简述运行时数据区的各个组成: 1....原创 2019-04-01 21:09:38 · 174 阅读 · 0 评论 -
JVM垃圾回收机制(一)
分析Java堆对象的生命流程 1.对象在内存分配 (1)内存规整的情况:内存规整的时候添加一个对象,指针就会下滑,但是会存在多线程的情况下,会存在指针碰撞的情况,使用CAS会降低性能,所以使用了一个叫栈上分配方法 (2)内存不规整的时候:内存不规整的时候使用的是标志空闲法。 (3)任何新的对象都会进入新生代的eden区 2.对象的GC回收 理解GC过程: 理解:新创建的对象会进入到新生代的ed...原创 2019-04-01 21:09:49 · 171 阅读 · 0 评论 -
JVM垃圾回收机制(二)
什么样的对象,在什么条件下回收 (1)强引用:Object object = new Object();强引用的对象需要在判断引用计数法,或者可达性分析法下判断是否需要被回收 (2)软引用:在新生代内存满了,进行GC的时候会进行回收,常用在缓存的用途 (3)弱引用:每次GC的时候都会被回收 JVM的回收算法 (1)标志-清除算法 (主要是使用在CSM垃圾回收器上面) 缺点:不连续会产生大量的空间...原创 2019-04-01 21:09:59 · 138 阅读 · 0 评论 -
JVM性能调优(二)
使用jstack如何发现死锁? 使用jstack观察程序有没有死锁的时候,首先检索文件,看看有没有dead lock这些字眼, 接着就要检测有没有blacked这些字眼 使用MAT分析发现内存泄漏的问题 1.首先调用 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/administrator/james/error.hprof 然后就可...原创 2019-04-01 21:10:25 · 290 阅读 · 0 评论 -
JVM垃圾回收机制(三)
知识点补充 G1垃圾回收器:garbage first,G1垃圾回收器是吧内存分成很多块,每次GC的时候回收内存最大的哪一块,G1每块大小为1-32M,最多有2000块 2.由于GC线程与用户线程是共享堆内存的,那么就存在GC线程与用户线程之间的协调问题。 (1)协调方式有两种: 抢占式的:就是GC线程主动的去发现安全点,当用户线程运行到安全点时,且有需要进行swt时,GC线程进行垃圾回收 主动...原创 2019-04-01 21:10:08 · 282 阅读 · 0 评论 -
JVM性能调优(一)
如何查看当当前的垃圾回收器 -XX:+PrintFlagsFinal -XX:+PrintCommandLineFlags server(64bit版本的JDK,默认使用的是Parallel Scavenges) client(32bit的可选) MBean 如何分析GC日志 1.首先你需要打印输出GC日志 -XX:+PrintGCTimeStamps -XX:+PrintGCDetails ...原创 2019-04-01 21:10:16 · 163 阅读 · 0 评论