![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 51
望湖楼醉
我未曾见过天才,只是见过一个个用心之人
展开
-
实战模拟对象进入老年代方式补充:幸存区内存不足
上一节说进入老年代有三种方式,其实还遗漏了一种,如果young GC过程中,幸存区的内存不足,也是会把对象放置到老年代的,不过是全都放到老年代,还是部分放到老年代,我们上手试试。 首先是JVM配置 -XX:NewSize=10485760 -XX:MaxNewSize=10485760 -XX:InitialHeapSize=20971520 -XX:MaxHeapSize=20971520 -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 -XX:Pret原创 2022-05-21 22:13:38 · 198 阅读 · 0 评论 -
实战模拟对象进入老年代的三种方式
我知道大家经常会被问题面试题-对象在什么情况情况下会进入老年代,答案我想大家都是知道的,但是更详细一点的,到底是年龄到了15就进入老年代呢,还是15的下一次young GC进入老年代,最大年龄设置为0会是什么情况,设置为16又会是什么情况?让我们用代码来实际操作看下。 1)动态年龄判断,当幸存区中年龄1+年龄2+年龄3+...+年龄n-1<50%,年龄1+年龄2+年龄3+...+年龄n-1+年龄n>50%,那么幸存区种年龄n及其以上的对象就会放到老年代中。 2)年龄到达阈值,通过-XX:Ma原创 2022-05-21 21:17:53 · 242 阅读 · 8 评论 -
java中的四种引用类型
java中的四种引用类型,分别为强,软,弱,虚四种引用 强引用 我们最常见的new就是一种强引用,只要这个引用还在,垃圾回收是绝对不会回收这个对象的 /** * 强引用 */ public static Student s1 = new Student(); 软引用 将实例对象通过SoftReference包装起来,正常情况下不会回收,在内存即将溢出时,会进行回收 /** * 软引用 */ public static原创 2022-05-16 22:16:55 · 332 阅读 · 3 评论 -
方法区会不会进行垃圾回收?
jvm相关参数如下 -Xms,-Xmx :-X一般代表的是一些JVM参数,ms 是memory start,mx 是memory max -Xms是堆内存的初始大小,-Xmx为堆内存的最大大小,一般会将初始大小和最大大小设置为相同的值,原因:防止内存抖动,因为在堆内存不够使用的时候,jvm向操作系统申请内存需要一定的开销。 -Xmn:是堆内存中新生代的大小,n代表的new,那么老年代的大小就是Xms-Xmn了 -XX:Permsize :永久代大小,也就是方法区,-XX:MaxPermSize永久.原创 2022-05-16 21:10:03 · 790 阅读 · 0 评论 -
java内存模型
类加载后,用于存放加载的类信息的一块内存 内存区域 1、存放加载的类(方法区,方法区还会放常量池,也叫永久代) 现在叫metaspace, 方法区存放加载的类 2、存放创建的对象 java堆内存 3、运行方法时使用 (程序计数器+java虚拟机栈) 用于保存每个方法的局部变量是java虚拟机栈,一个方法创建一个栈帧 4、调用native方法 本地方法栈 ...原创 2022-05-14 23:28:06 · 103 阅读 · 0 评论 -
jvm加载流程以及类加载器的概念
jvm加载类的流程 1、加载(将对应的.class字节码文件加载到对应的类到内存) 2、验证(校验相应的.class是否完全符合jvm规范) 3、准备(需要关注的,因为给类分配了内存空间,类变量也分配好内存空间,并给默认值) 给类变量分配内存空间,并赋值一个初始值 4、解析(解析符号,并关联到具体的对象的真正的内存地址) 将符号引用替换为直接引用 符号引用就是一组符号来描述所引用的目标。符号引用的字面量形式明确定义在《java虚拟机规范》的class文件格式中。直接引用就是直接指向目标的指原创 2022-05-14 17:24:54 · 150 阅读 · 2 评论