摘要: jvm命令 jps 显示虚拟机进程 jstat (JVM statistics Monitoring)是用于监视虚拟机运行时状态信息的命令。 jstat -gc 查看GC情况 常用命令 jmap(JVM Memory Map)命令用于生成heap dump文件 jmap -dump:live,for 阅读全文
posted @ 2021-04-22 23:53 i%2 阅读(136) 评论(0) 推荐(0)
摘要: 跨代引用 老年代对象引用新生代或新生代引用老年代。 解决办法:记忆集。 HotSpot记忆集的实现方式是卡表,维护一张卡表(Remember Set),类似一个字节数组,每个元素都会存放卡页地址,卡页中存放一个或多个对象,若这些对象存在跨代引用,标记为1,下次GC时,就查(CARD_TABLE[th 阅读全文
posted @ 2021-04-22 23:50 i%2 阅读(134) 评论(0) 推荐(0)
摘要: 虚拟机参数:方法区、栈大小设置 通过JVM启动参数来配置以上内存空间 Heap(堆)内存大小设置 -Xms512m 设置JVM堆初始内存为512M -Xmx1g 设置JVM堆最大可用内存为1G Stack(栈)内存大小设置 -Xss1m Permanent Generation(持久代/方法区)内存 阅读全文
posted @ 2021-04-22 23:49 i%2 阅读(153) 评论(0) 推荐(0)
摘要: JVM的安全点 有两种查找 GC Roots 的方法: 遍历方法区和栈区查找(保守式 GC) OopMap 数据结构来记录 GC Roots 的位置(准确式 GC) 对应 OopMap 的位置即可作为一个安全点(Safe Point)。安全点意味着在这个点时,所有工作线程的状态是确定的,JVM 就可 阅读全文
posted @ 2021-04-22 23:47 i%2 阅读(211) 评论(0) 推荐(0)
摘要: minor gc如果运行的很频繁,可能是什么原因引起的 1、 产生了太多朝生夕灭的对象导致需要频繁minor gc 2、 新生代空间设置的比较小 minor gc如果运行的很慢,可能是什么原因引起的? 1、 新生代空间设置过大。 2、 对象引用链较长,进行可达性分析时间较长。 3、 新生代survi 阅读全文
posted @ 2021-04-22 23:45 i%2 阅读(132) 评论(0) 推荐(0)
摘要: JVM对象的分配原则 对象优先分配到Eden Space区 大对象直接进入老年代 长期存活对象进入老年代 动态年龄判定 空间分配担保。如果Survivor区域不够容纳对象,则老年代进行空间担保,下一轮GC直接进入老年代。担保失败就FULL GC。 阅读全文
posted @ 2021-04-22 23:44 i%2 阅读(45) 评论(0) 推荐(0)
摘要: 垃圾回收触发条件 当Eden区和From Survivor区满时; 调用System.gc时,系统建议执行Full GC,但是不必然执行 老年代空间不足 方法区空间不足 通过Minor GC后进入老年代的平均大小大于老年代的可用内存 哪些对象可以作为 GC Root ? 虚拟机栈(栈帧中的本地变量表 阅读全文
posted @ 2021-04-22 23:42 i%2 阅读(74) 评论(0) 推荐(0)
摘要: 对象头里有啥 MarkWord 锁状态 25bit 4bit 1bit 2bit 23bit 2bit 是否偏向锁 锁标志位 无锁 对象的HashCode 分代年龄 0 01 偏向锁 线程ID Epoch 分代年龄 1 01 轻量级锁 指向栈中锁记录 的 指 针 00 重量级锁 指向重量级锁 的 指 阅读全文
posted @ 2021-04-22 23:40 i%2 阅读(42) 评论(0) 推荐(0)
摘要: 大对象直接进入老年代?GC规则?新生、老年比例? ​ 对于parnew和serial来说,大于-XX PretenureSizeThreshold就会直接进入老年区,默认是4M。 ​ GC规则:当老年代剩余连续大小大于之前晋升老年代的平均大小,就会minorGC,否则fullGC ​ 比例:新1:老 阅读全文
posted @ 2021-04-22 23:39 i%2 阅读(64) 评论(0) 推荐(0)
摘要: ClassLoader 作用是动态加载class进内存。java中的class并不是一次性全部加载进内存的,而是根据需要动态加载的。通过类加载机制(ClassLoader)动态加载class进内存。 除了BootStrap ClassLoader,其他所有ClassLoader都必须继承自java. 阅读全文
posted @ 2021-04-22 23:36 i%2 阅读(64) 评论(0) 推荐(0)
摘要: 类的加载、 类加载器子系统 字节码生成(javac 命令,.java->.class),简单编译原理,词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成 加载 class二进制流字节码读取进方法区,在内存中生成一个java.lang.Class代表该对象作为访问入口 验证 文件格式验证: 阅读全文
posted @ 2021-04-22 23:35 i%2 阅读(41) 评论(0) 推荐(0)
摘要: 常量池 在Class文件结构中,最头的4个字节用于存储魔数Magic Number(0xCAFEBABE:咖啡宝贝),用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再接着是用于存放常量的常量池,用于存放编译期生成的各种字面量和符号引用, 阅读全文
posted @ 2021-04-22 23:33 i%2 阅读(58) 评论(0) 推荐(0)
摘要: jvm内存模型 虚拟机栈 栈优化:默认为1M,(-Xss) 线程私有、生命周期同线程,每个方法运行都对应帧栈的建立及在虚拟机栈的入栈出栈过程。 局部变量表 非静态方法会在index[0]存该方法的实例引用(4字节),随后存放方法参数和局部变量(须显示初始化)。 操作栈 桶式结构栈,被各种指令写入和提 阅读全文
posted @ 2021-04-22 23:31 i%2 阅读(50) 评论(0) 推荐(0)
摘要: JMM(java memory model) 是什么 ​ JAVA是多线程的,每个线程操作的是自己的工作内存,线程不能直接操作主内存。由JMM通过LOAD/STORE操作在主内存之间传递值。主内存里放的是所有变量如实例、静态变量等。好处是屏蔽了不同厂商操作系统、硬件内存访问细节,能达到多平台兼容的效 阅读全文
posted @ 2021-04-22 23:30 i%2 阅读(42) 评论(0) 推荐(0)
摘要: 垃圾回收(GC) JVM会对内存区域进行定期的检查,当运行到线程安全点的时候启动垃圾回收器,根据垃圾回收机制对内存区域进行内存回收。 为什么要有GC? 内存处理是编程人员最容易出现问题的地方,一旦稍有疏忽忘记回收内存就可能出现内存不足或系统卡顿、不稳定甚至崩溃的现象,造成严重的经济损失。所以可以交给 阅读全文
posted @ 2021-04-22 23:28 i%2 阅读(77) 评论(0) 推荐(0)
摘要: java文件操作 使用File类,常用API有:(如 new File("a/b/c.txt")) File类是不分文件还是文件夹的,两个都可以用来生成File对象。 getPath:得到的是初始化时的路径,即"a/b/c.txt" getParentFile:得到上一层级File对象,即File( 阅读全文
posted @ 2021-04-22 23:25 i%2 阅读(61) 评论(0) 推荐(0)
摘要: java中数组的深浅拷贝 深拷贝:拷贝后完全是另一个新的地址和空间,拷贝前后对象互不影响;浅拷贝:只是拷贝了引用,并没有开辟新的内存空间,修改原对象,新对象也会随之改变。 数组拷贝方式 arr.clone() 新建一个与原数组大小一样的数组,利用循环挨个复制 Arrays.copyOf(arr, a 阅读全文
posted @ 2021-04-22 23:24 i%2 阅读(58) 评论(0) 推荐(0)
摘要: 集合去重 若不考虑保留原顺序:利用set:HashSet set = new HashSet(vector); 若要考虑保留原顺序:利用有序Set:new ArrayList<XX>(new TreeSet<XX>())、new ArrayList<XX>(new LinkedHashSet<XX> 阅读全文
posted @ 2021-04-22 23:23 i%2 阅读(73) 评论(0) 推荐(0)
摘要: list set map 各自实现类的区别 List(不唯一有序集合) set方法会替换index位置的元素,返回替换前的元素 ArrayList:底层是数组,支持随机访问,读快写慢,线程不安全。 扩容策略:第一次为0,添加第一个元素后扩容为10,当满了之后扩容为(当前大小+当前大小 >> 1),增 阅读全文
posted @ 2021-04-22 23:22 i%2 阅读(101) 评论(0) 推荐(0)
摘要: select、poll、epoll区别 select和poll 都是IO多路复用的实现,select和poll类似,对所有的IO请求进行轮询(对fds数组遍历),当描述符(fd)就绪(读写就绪),就通知应用程序进行相应操作,超时就返回。 select和poll区别:select基于fds数组存储,默 阅读全文
posted @ 2021-04-22 11:03 i%2 阅读(84) 评论(0) 推荐(0)