
jvm
文章平均质量分 87
Butterfly(Papillon)
我会用我的肩扛起我岁月里所有的坚强
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
jvm调优实战
jmap查看内存信息 jmap histo /pid > ./log.txt :查看某一进程实例个数,占用内存的字节数,以及所属的类 jmap -heap /pid :查看堆信息 jmap ‐dump:format=b,file=app.hprof /pid 通过jvisualvm命令启动jvm可视化管理界面可导入dump文件进行分析:查看类的实例 jstack 分析死锁:写一段死锁代码 public class DeadLockTest { priva.原创 2022-05-23 17:51:26 · 423 阅读 · 0 评论 -
jvm垃圾回收算法和垃圾回收器
垃圾回收算法 jvm垃圾回收算法包括复制算法、标记清楚算法和标记整理算法,它们都基于分代收集理论。所谓分代收集理论,可以理解为jvm根据对象的生命年龄将他们分在不同的内存模块,也就是熟知的新生代和老年代。由于新生代存储的对象大部分都是朝生夕死的对象,一般使用复制算法,只需要付出少量的复制成本就能满足了。而老年代的对象生命周期都比较长,一般会选择标记-清楚或者标记-整理算法。复制算法是比其他两种算法快10倍以上的。 标记-复制算法 复制算法是将内存区域划分为两个模块,如下图,在内存被整理前,左边的内存区原创 2022-05-12 18:01:07 · 1024 阅读 · 0 评论 -
jvm内存模型
jvm内存模型 通过一个简单示例来演示jvm类加载器将字节码加载到内存,jvm执行引擎执行字节码如何分配和利用jvm内存模型的过程 public class Test { private User user = new User(); public int add() { int a = 10; int b = 10; int c = a + b; return c; } public static原创 2022-03-26 15:15:35 · 304 阅读 · 0 评论 -
jvm类加载器和双亲委派机制
类加载 当我们运行某个java类的main函数时,首先需要加载这个类,加载类的主要流程为: 加载、验证、准备、解析、初始化、使用、卸载。 加载:从磁盘文件找到需要加载的class字节码文件,将它以Class对象的方式加载到jvm内存中,当需要使用它时,比如创建对象等操作,只需知道它所在对应的地址就可以使用。 验证:验证字节码是否符合jvm字节码的规则,比如:魔数。 准备:给类的静态变量分配内存,并赋默认值,比如,int类型,赋值0。 解析:将符号引用替换为直接引用,该阶段会把静态方法替换为指向数原创 2022-01-15 21:32:21 · 222 阅读 · 0 评论