10 2021 档案
摘要:JVM 内存相关的几个核心参数 参数部分看我笔记 https://note.youdao.com/s/Ch3awnVu JVM模板 1. ParNew + CMS 版 根据服务调整 -Xmx -Xms -Xmn 大小即可 -server -Xmx1g -Xms640m -Xmn512m -Xss1m
阅读全文
摘要:方法栈帧的局部变量引用了一个对象的地址,对象保存在 Java 堆内存里面。 而在计算机中,内存资源是十分有限的,所以当一个方法执行完毕,那么方法的栈帧就会出栈,局部变量引用也会被清除。 这时,堆内存中的对象没有被任何一个变量引用,那么对于不需要的对象应该如何处理? 一、JVM 的垃圾回收机制 JVM
阅读全文
摘要:JVM 在运行代码时,必须使用多块内存空间的,不同的内存空间用来存放不同的数据,再配合代码流程,才能让系统运转。 一、内存区域划分 代码运行时,需要分配内存用来存放类;运行方法、变量时,也需要存放在内存;创建对象时,也需要放在内存。 二、方法区 字节码文件(.class)加载进来的类,以及一些类似常
阅读全文
摘要:Java 代码执行流程 类加载过程 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 类加载时机:代码使用到这个类时 验证阶段 ".class”加载到内存里之后,必须先验证一下,校验他必须完全符合JM规范,后续才能交给VM来运行。 准备阶段 给加载的类分配内存空间 给类
阅读全文
摘要:概述 ArrayList 是基于数组实现的,是一个能自动扩展的动态数组。 ArrayList 是线程不安全的,多线程情况下添加元素会出现数组越界的情况,而且数组赋值操作不是原子操作,会导致多线程情况下数据混乱。 ArrayList 实现了 Serializable 接口,支持序列化; 实现了 Clo
阅读全文
摘要:计算原则 i++ 和 ++i 都是先自增后返回,只不过返回值有不同。后文有代码指令解释。 对此有个简单的记忆方法,变量在 ++ 前返回的就是自增前的值,变量在 ++ 后返回的就是自增后的值。 另外,java 的表达式是从左到右执行的,即使只是一个变量,它也是一个表达式。 记住,用逻辑运算符(+、-、
阅读全文