Java性能调优
文章平均质量分 93
主要涉及一些剖析工具、JVM基础、代码层面的优化、JVM参数调优、类路径优化、内存设置、垃圾回收器调优、系统级优化等。
码界调试侠
每一个bug都是通向卓越的阶梯,每一段艰辛的编程时光都在铸就更强的自己
展开
-
JVM指令手册
aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将int类型常量5压入栈lconst_0 将long类型常量0压入栈lconst_1 将long类型常量1压入栈fconst_0 将float类型常量0压入栈。原创 2024-02-14 18:16:05 · 2305 阅读 · 0 评论 -
JVM对象创建与内存分配机制深度剖析
JVM对象的创建和内存分配涉及多个阶段,包括加载、验证、准备和初始化。对象首先在方法区中被加载和验证,然后在堆区分配内存。堆是JVM管理的主要内存区域,用于存储Java对象实例。对象的创建和使用遵循引用计数垃圾收集机制,通过增加和减少引用计数来追踪对象的生命周期。原创 2024-02-13 20:09:52 · 1355 阅读 · 0 评论 -
全面理解JVM虚拟机
本文主要介绍了JVM虚拟机的基本知识,包括Class文件规范、类加载机制、执行引擎、垃圾回收器以及GC日志分析。通过实例解析了JVM底层工作原理,如字节码指令执行流程和异常表,以及类加载机制中双亲委派机制的作用。同时,介绍了JVM中不同类型的垃圾回收器,并通过GC日志分析了JVM内存使用情况。最后,总结指出全面理解JVM对Java开发人员非常重要。原创 2024-02-10 14:09:03 · 1124 阅读 · 0 评论 -
JVM内存模型深度剖析与优化
由于调整元空间的大小需要Full GC,这是非常昂贵的操作,如果应用在启动的时候发生大量Full GC,通常都是由于永久代或元空间发生了大小调整,基于这种情况,一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值,并设置得比初始值要大,对于8G物理内存的机器来说,一般我会将这两个值都设置为256M。到s1或老年代,最后扫描完了将s0区域的对象分配指针移动到区域的起始位置即可,s0区域之前对象并不直接清理,当有新对象分配了,原有区域里的对象也就被清除了。原创 2024-02-12 18:32:00 · 682 阅读 · 0 评论 -
JAVA类加载机制
虽然经理在OA系统里看不到SalaryCaler类的源码了,但是通过OA系统的源码最终还是可以找到这个jar包。那么就可以对jar包进行反编译,查看到jar包对应的源码了。所以,老王还需要考虑如何对class文件进行代码混淆,让经理无法反编译出源码。简单一点的,将class文件的后缀改一下,从.class转为.myclass。就像大家把游戏软件改成.txt结尾一样。只是修改后缀,那么经理还可以把后缀改回来再反编译。所以稳妥一点的方法,是要改一改class文件当中的二进制内容。原创 2024-02-12 17:20:33 · 982 阅读 · 0 评论 -
jvisualvm安装Visual GC插件
2.1)Compile Time(编译时间):6368compiles 表示编译总数,4.407s表示编译累计时间。一个脉冲表示一次JIT编译,窄脉冲表示持续时间短,宽脉冲表示持续时间长。2.2)Class Loader Time(类加载时间): 20869loaded表示加载类数量, 139 unloaded表示卸载的类数量,40.630s表示类加载花费的时间2.3)GC Time(GC Time):2392collections表示垃圾收集的总次数,37.454s表示垃圾。原创 2024-02-13 21:00:58 · 1366 阅读 · 0 评论