
jvm
jvm
weixin_42868638
这个作者很懒,什么都没留下…
展开
-
虚拟机性能分析和故障解决工具
1.jps(1) jps是用于查看有权访问的hotspot虚拟机的进程(2) 命令格式:jps [options ] [ hostid ][options ] -q:仅输出VM标识符,不包括classname,jar name,arguments in main method -m:输出main method的参数 -l:输出完全的包名,应用主类名,jar的完全路径名 -v:输出jvm参数 -V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=原创 2020-10-15 16:28:12 · 566 阅读 · 2 评论 -
arthas2--监控
--观察所有成员变量的值[arthas@14359]$ watch demo.MathGame primeFactors "target" -x 2Press Q or Ctrl+C to abort.Affect(class count: 1 , method count: 1) cost in 101 ms, listenerId: 1ts=2020-08-18 14:14:17; [cost=1.251937ms] result=@MathGame[ random=@Ra...原创 2020-08-18 14:57:09 · 681 阅读 · 0 评论 -
JMM
Object有一个monitor对象,默认对象里面的Owner为null,当有一个线程T1,通过synchornized竞争时,发现Owner中没有值,则Owner=t1(通过字节码monitorenter)。其他线程发现Owner中有值,则进行entryList中。T1中synchornized块执行完,即会调用moniterexit字节码,将Owner值置为空,entryList中的线程就可以竞争占用这个Owner 了。...原创 2020-07-29 09:06:11 · 111 阅读 · 0 评论 -
类加载
-记录了java类信息,父类信息,方法信息、成员信息-解释器、操作数栈-文件信息:修改时间、大小、md5、源文件名称-类信息:类全路径、minor version、major version、修饰符-常量池-方法信息-类加载器将字节码加载到内存中,其中,常量池的数据会放入一个叫运行时常量池。-运行时常量池-如果定义一个int,在int范围内,则存储在字节码指令中,如果超过int范围,则存储在运行时常量池-局变变量表和操作数栈...原创 2020-06-06 21:55:48 · 157 阅读 · 0 评论 -
垃圾回收调优
科学计算吞吐量大,对于低延迟要求不是特别高,选用ParallelGC互联网项目,对低延迟要求高,选用CMS,G1,ZGC可以尝试使用redis,申请大内存,避免使用java申请优先调新生代参数新生代变大,触发GC的时间变长了,很造成晋升到老年代空间变大。另外,新生代变大,会压缩老年代空间,会引发full gc。空间越大,吞吐量会上升,但到一定时间,由于触发gc的时间变长,当发生gc时,时间会变长,导致吞吐量下降。新生代大小设置推荐:新生代能容纳所有【并发量...原创 2020-06-04 21:39:50 · 142 阅读 · 0 评论 -
JVM 堆参数
堆相关参数:/** * 演示内存的分配策略 */public class Demo2_1 { private static final int _512KB = 512 * 1024; private static final int _1MB = 1024 * 1024; private static final int _6MB = 6 * 1024 * 1024; private static final int _7MB = 7 * 1024 * 1024原创 2020-05-21 16:55:11 · 205 阅读 · 0 评论 -
垃圾回收算法
(1) 标记清除速度较快存在内存碎片(2) 标记整理速度较慢没有内存碎片(3) 复制不会有内存碎片需要占用双倍内存空间原创 2020-05-21 14:33:18 · 142 阅读 · 0 评论 -
如何判定对象可以回收
1.引用计数法中循环引用的问题啥是引用计数法顾名思义,就是当一个对象被引用的时候进行数字计数,当增加一次引用的时候计数+1,当删除一个对象的引用时-1;当一个对象的引用变成0的时候,就可以被回收了public class Test { public static void main (String args[]){ MyObject1 object1 = new MyObject1();//object1为 MyObject1的第一次引用 ,引用+1 MyOb原创 2020-05-21 14:28:33 · 270 阅读 · 0 评论 -
直接内存
定义Direct Memory常见于 NIO 操作时,用于数据缓冲区分配回收成本较高,但读写性能高不受 JVM 内存回收管理分配和回收原理使用了 Unsafe 对象完成直接内存的分配回收,并且回收需要主动调用 freeMemory 方法ByteBuffer 的实现类内部,使用了 Cleaner (虚引用)来监测 ByteBuffer 对象,一旦 ByteBuffer对象被垃圾回收,那么就会由 ReferenceHandler 线程通过 Cleaner 的 clean 方法调 用 fr原创 2020-05-19 16:45:20 · 138 阅读 · 0 评论 -
StringTable
StringTableString s1 = "a";String s2 = "b";String s3 = "a" + "b";String s4 = s1 + s2;String s5 = "ab"; String s6 = s4.intern(); // 问 System.out.println(s3 == s4); System.out.println(s3 == s5); System.out.println(s3 == s6); String x2 = new Stri原创 2020-05-19 13:27:24 · 225 阅读 · 0 评论 -
方法区
方法区内存溢出1.8 以前会导致永久代内存溢出演示永久代内存溢出 java.lang.OutOfMemoryError: PermGen space * -XX:MaxPermSize=8m1.8 之后会导致元空间内存溢出-演示元空间内存溢出 java.lang.OutOfMemoryError: Metaspace * -XX:MaxMetaspaceSize=8m场景springmybatis...原创 2020-05-19 10:54:11 · 122 阅读 · 0 评论 -
堆内存
Heap 堆通过 new 关键字,创建对象都会使用堆内存特点它是线程共享的,堆中对象都需要考虑线程安全的问题有垃圾回收机制堆内存溢出虽然有垃圾回收机制,但如果不断有新的对象产生,而且这些新产生的对象又在使用,可能会造成堆内存溢出 堆内存诊断jps 工具查看当前系统中有哪些 java 进程jmap 工具查看堆内存占用情况 jmap - heap 进程idjconsole 工具图形界面的,多功能的监测工具,可以连续监测案例垃圾回收后,内存占用仍然很高...原创 2020-05-19 10:33:57 · 170 阅读 · 0 评论 -
Java 虚拟机栈
Java Virtual Machine Stacks (Java 虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活i动栈帧,对应着当前正在执行的那个方法问题辨析垃圾回收是否涉及栈内存?不会,因为线程读取到方法时,会入栈,执行完方法会出栈。栈内存分配越大越好吗?对应的参数-Xss:linux默认为1M。值越大,代表单个线程占用内存增大,那么线程数就会被挤压,变少了。一般用默认值就行了原创 2020-05-18 16:59:00 · 179 阅读 · 0 评论 -
程序计数器
Program Counter Register 程序计数器(寄存器)作用,是记住下一条jvm指令的执行地址多个线程发生切换时,需要知道它的下一步要执行的指令,就用到了程序计数器,程序计数器是保存到寄存器上的特点是线程私有的不会存在内存溢出程序计数器仅仅只是一个运行指示器,它所需要存储的内容仅仅就是下一个需要待执行的命令的地址,无论代码有多少,最坏情况下死循环也不会让这块内存区域超限,因为程序计算器所维护的就是下一条待执行的命令的地址,所以不存在OutOfMemoryError...原创 2020-05-18 15:00:56 · 597 阅读 · 0 评论 -
什么是jvm
编译工具如下:javac.exe: Java编译器, 将Java源代码转换成字节码。java.exe: Java解释器, 直接从class文件或者jar包执行Java应用程序代码。jre.exe: 类似于Java解释器, 但是并不需要Java.exe所有与Java开发相关的选项。appletviewer.exe: 小程序浏览器, 一种执行HTML文件上的Java小程序的Java浏览器。javadoc.exe: 根据Java源码及说明语句生成HTML文档。jdb.exe:Java调试器,可以逐.原创 2020-05-18 14:30:17 · 212 阅读 · 0 评论