![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
两页扁舟
这个作者很懒,什么都没留下…
展开
-
JVM不同GC和内存模型
内存模型堆内存用户共享,类通过引用会复制一个信息过去,使用完后会更新到堆内存中。程序计数器记录当前线程执行到那条语句,栈记录方法执行到哪里,程序计数器压栈,保护断点本地变量表中有本地创建的原生数据类型变量和对象实例的引用。GCGC的选取要根据具体业务环境,做压测得出。SerialGC每次进行GC的时候只有一个线程进行GC,执行GC时STW,每次执行时间长,回收的垃圾多在大内存时,在延迟和吞吐量上性能很差,但是在内存1g时性能要比并发GC更好,且在一些不需要频繁创建对象的项目中,产型G原创 2021-01-18 21:12:07 · 106 阅读 · 0 评论 -
对不同GC分配不同的内存,进行压测
GC对比分析在图上可以看出G1GC 和串行GC的吞吐量是比较高,几乎完胜并行GC,预测可能是因为这个项目简单,并不怎么需要GC,所以小步多走比不上大步少走。G1GC堆内存1g堆内存1g 的时候吞吐量提升了7W 35W->42W,每秒的并发量从5.8k->6.9k并发能力提升堆内存2g堆内存3g堆内存4gParallelGC1G2G3G4GSerialGC1G2G3G4G...原创 2021-01-18 18:50:37 · 158 阅读 · 1 评论 -
JVM 不同GC的性能对比
并行GCVS G1GC这里设置最大堆内存均为1g时,并行GC和默认参数下吞吐量明显不同,并GC的吞吐量少查看java版本后发现我这里安装的是jdk’9’,而jdk9默认使用G1GC,JDK8默认并行GC。256m其中有一个 compose oops mode,JVM压缩指针 Oracle JDK从6 update 23开始在64位系统上会默认开启压缩指针。JVM之压缩指针——Compressed oopszhel 这里是第一次GC六行分别是 GC的触发原因对那个区进的GC 内存分配原创 2021-01-17 16:58:12 · 652 阅读 · 0 评论 -
jvm启动一个项目,并查看内存使用情况
启动一个jar包实操说明最大堆内存 1g-Xmx1g初始堆内存1g-Xms1g关闭自适应参数-XX:-UseAdaptiveSizePolicy启用G1GC-XX:+UseG1GC设置GC理想暂停延迟为50ms-XX:MaxGcPauseMillis=50启动jar包-jar x.jar查看进程相关信息jmap实操说明jmap -heap提示不能用,建议以jhsdb jmap代替输入jhsdb jmap 后出现提示,后面跟具体的参数以执行相关操作其中 you原创 2021-01-12 15:14:15 · 484 阅读 · 0 评论 -
JVM内存结构
转自 :https://www.cnblogs.com/paddix/p/5309550.htmlJVM内存模型根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分方法区:方法区也是所有线程共享。主要用于存储类的信息、常量池、方法数据、方法代码等。方法区逻辑上属于堆的一部分,但是为了与堆进行区分,通常又叫“非堆”。 关于方法区内存溢出的问题会在下文中详细探讨。虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个转载 2021-01-08 10:58:51 · 73 阅读 · 0 评论 -
JVM启动参数
系统属性-D 也可以这样设置获取,也相当于隐式的传参,我们可以在一个地方设置一个系统属性,然后在一个地方获取。运行模式堆内存 **DirectMemory 是堆外内存,不受GC管理,非堆是jvm使用的一些元数据xmx是最大堆内存,xms是初始堆内存,两这一般设置相等的数值,否则刚开始的时候JVM就可以会有FullGC(刚开始的时候,堆设置过小),扩容的时候可能会造成性能抖动。Xmx一般设置为集群内存的60%~80%比较好...原创 2021-01-08 10:36:35 · 139 阅读 · 0 评论 -
自定义类加载器JDK9
自定义类加载器继承ClassLoader类,重写里面的findClass方法。 另写一个方法获取.Class/Xlass文件中的二进制数,以数组方式存储返回。调用父类的defineClass方法,返回一个类。 此处的xlass文件是取反加密后的文件。所以在获取数组的时候,有一个遍历取反。import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException原创 2021-01-07 21:57:52 · 259 阅读 · 1 评论 -
JVM字节码简单示例
字节码编译+简单查看字节码字节码javac -g x.java 添加一个参数g可以在查看字节码文件时看到本地方法表javap -c -verbose x.class 添加一个参数可以查看常量池 行号 头 load 间给本地变量表的数据写入到栈中,store将栈中的数据写入到本地变量表中这里有两个方法体,第一个中是一个构造方法 aload_0将本地常量池中零为的操作数压入栈中调用invokespecial指令,操作数是#1即调用本地常量池中 序号为1 的指令,即调用父类的Objec原创 2021-01-07 17:09:35 · 75 阅读 · 0 评论