jvm调优
jvm初识、调优、生产调优、问题排查
dandanforgetlove
这个作者很懒,什么都没留下…
展开
-
JVM默认垃圾回收器扫盲,那些说UseParallelGC是 PS + Serial Old 的别再打脸了
首先来看下错误的示范,注意!!!是错误的!!!本来你想靠百度,没想到进了个坑。博客地址就不贴了,希望各位楼主发博之前记得验证下,别再误导了。两种错误方式!!!尤其是第二张图这个博客主,不觉得打脸吗???还是自己动手好了1.设置运行参数...原创 2020-05-19 17:38:24 · 1466 阅读 · 0 评论 -
JVM调优实战:GC、Parallel、CMS、G1 常用参数,G1介绍、CPU100%排查
OOM:OutOfMemory。内存溢出cpu 100%: 使用top,查看占用cpu比较高的进程,使用top -Hp 进程ID ,查看对应的占用cpu较高的线程。如果是java应用,使用 jstack 导出该线程的堆栈。然后查看哪个方法(栈帧)消耗时间 jstack。内存飙高: 导出堆内存 jmap,使用jhat 、jvisualvm、mat 等等进行分析。如何监控JVM: jstat、jvisualvm 等等...原创 2020-05-15 16:08:33 · 3191 阅读 · 0 评论 -
PS+PO调优实战:hotspot参数、调优参数
MethodArea(永久代): 存储class信息、方法信息、代码编译完的信息、字节码.1.7 之前叫 perm Generation , 必须设置大小,并且JVM启动之后没办法更改。存放字符串常量。1.8叫 meta space,默认大小为物理内存。 字符串常量存放在堆中。GC调优:尽量减少FGC(full GC)JVM 参数:-XX:+UseSerialGC = Serial New (DefNew) + Serial Old 可以一起指定,也可以单独指定-XX:+Us...原创 2020-05-14 16:58:41 · 3871 阅读 · 11 评论 -
JVM 调优理论知识:垃圾回收。常见垃圾回收器、GC算法。PC、PN、CMS、PO、G1、ZGC,JVM GC算法
熟悉GC常用算法,熟悉常见垃圾收集器,具有实际JVM调优实战经验garbage什么是garbage?没有被引用的对象都是垃圾 garbagehow to find a garbage 如何找到垃圾1.reference count 引用计数rc 不能解决的问题: 循环引用。例如 A引用B,B引用C,C引用A.2.root searching 根可达算法。 线程栈变量、静态变量、常量池、JNI指针GC algorithms1. Mark-Sweep ( 标记清...原创 2020-05-13 18:36:57 · 3662 阅读 · 0 评论 -
JVM运行时数据区和常用指令
JVM stackpc:程序计数器VMS:栈帧heap:堆method area ( 1.8前叫:perm space,1.8之后叫:meta space):方法区Frame 每个方法对应一个栈帧1. Local Variable Table 局部变量表2. Operand Stack 操作栈 对于long的处理(store and load),多数虚拟机的实现都是原子的 jls 17.7,没必要加volatile3. Dynamic Linkin...原创 2020-05-13 17:03:30 · 189 阅读 · 0 评论 -
内存屏障与JVM指令:markword、对象创建过程、对象内存布局
> LoadLoad屏障:> 对于这样的语句Load1; LoadLoad; Load2,>> 在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。StoreStore屏障:> 对于这样的语句Store1; StoreStore; Store2,>> 在Store2及后续写入操作执行前,保证Store1的写入操作对其它处理器可见。>> LoadStore屏障:...原创 2020-05-13 14:45:43 · 1077 阅读 · 1 评论 -
JVM入门及class文件格式
Java virtual machinejvm跟class无关。任何语言只要能遵循class的规范,一样能被jvm 运行。jdk、jre、jvm的关系class 文件查看IDEA --> setings --> BinEd 二进制/十六进制转化jclasslib bytecode官网下载插件地址https://plugins.jetbrains.com/类加载器通过 System.out.println(Strin...原创 2020-05-11 18:51:19 · 232 阅读 · 0 评论 -
Java 内存模型:存储器、缓存行、伪共享、cpu乱序、指令重排
存储器层次结构缓存行缓存行是为了执行的更快。intel 的缓存行大小是64字节。伪共享:如果,x,y 在一起。为了提高效率,会一起读到L2 里面,当多线程时,左边L2和右边L2可能都进行了读取。左边L2 修改了X,右边L2修改了Y,这时就需要通知其它CPU进行重新读取,此时需要进行其它cpu的通知。从而影响了效率。解决:使用缓存行对齐。 jdk8 @Contended 注解CPU乱序执行:可以提高效率cpu为了提高指令效率,会在一条指令执行过程中(比如去内存读数据(慢100倍原创 2020-05-12 17:21:26 · 248 阅读 · 0 评论