4对象 对象对象的创建 内存分配方式 指针碰撞:假设Java堆中内存绝对规整,所有用过的内存在一边,没有用过的在另一边,中间放着一个指针作为分界器。分配内存为将指针向空闲区域移动与对象大小相等的一段距离。 空闲列表:堆中内存不规整,虚拟机需要维护一个列表,记录那些内存块是可用的。在分配的时候从列表中找到一块足够大的内存划分给对象并更新列表上的记录。 实现并发下安全分配内存的方法 CAS:对分配 2025-10-26 04Java > JVM
5虚拟机类加载机制 虚拟机类加载机制 1.8中的扩展类加载器在1.9中改为平台类加载器 类的加载、连接、初始化都是在程序运行期间完成的 类加载的生命周期 详解 loading(按需动态加载,双亲委派机制) 自底向上检查该类是否已经加载parent方向 linking Verfication 验证文件是否符合jjvm规定 Preparation 静态变量赋默认值 Resolution 将类、方法、属 2025-10-26 04Java > JVM
6JVM调优 JVM常用参数hotSpot参数分类 标准的:- 开头,所有的hotSpot都支持 非标准的:- X 开头,特定版本hotSpot支持特定命令 不稳定:- XX开头,下个版本可能取消 常用参数 -Xmn -Xms -Xmx -Xss年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB使用TLAB,默认打开 -XX:+PrintTLAB打印TLAB的使用情况 -XX:TLABSize设置 2025-10-26 04Java > JVM
虚拟机参数 虚拟机运行参数 -Xms100m -Xmx100m : jvm的堆的最大最小限制,通常相同,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。 -Xmn:年轻代大小 -XX:+PrintFlagsFinal -version : 打印所有的虚拟机参数 -XX:SurvivorRatio :老年代和新生代的所占内存比例 -XX:Newratio : old 2025-10-26 04Java > JVM
JavaCR心得 仙人抚我顶,使我生长发 完成业务逻辑时,要先将业务逻辑分块,每块封装成一个有语义化的方法,然后填充方法。不要从头一个方法写到尾,这样的代码可读性较差并且内聚性较高。 在了解项目代码的过程中太过于专注在代码方面,只了解逻辑实现而没有与现实的业务逻辑所联系,对主要数据模型的相互流转过程关注度不高。导致对项目逻辑理解效率不高 MateQ的消息消费任务要考虑相同任务的并发问题以及幂等性 嵌套if尽量不要在 2025-10-26 04Java
Java各版本新特性 java新特性Java8 Lambda 表达式,Stream API,Consumer、Predicate、Supplier和Function 默认方法 Optional 类 Date Time API Java9 语法变化 接口私有方法 Deprecated新增了两个默认属性 sincemm,forRemoval 字符串底层数组从char[] -> byte[] 模块化 Java1 2025-10-26 04Java
01Java基础 java基础面向对象和面向过程 程序和过程分别作为独立的部分来考虑,数据代表问题空间中的客体,程序代码则用于处理这些数据,这种思维方式站在计算机的角度去抽象问题和解决问题, 面向过程编程 站在显式的角度去抽象问题和解决问题,把数据和行为都看到是对象的一部分 Object通用方法1234567891011public native int hashCode()public boolean equa 2025-10-26 04Java > java基础
02Java集合 容器fail-fast&fail-safefail-fast fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出 ConcurrentModificationException异常。fail-fast机制并不保证在不同步的修改下一定会抛出异常,它只是 2025-10-26 04Java > java基础
03反射及动态代理 反射与动态代理反射 反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义 Java9中引入了所谓 Open 的概念,只有当被反射操作的模块和指定的包对反射调用者模块 Open,才能使用 setAccessib 2025-10-26 04Java > java基础
04序列化 序列化基础知识 静态变量是不会被序列化的,因为序列化针对的是对象,而静态变量属于是类变量 被transient 关键字修饰的变量或者被@transient修饰的方法无法进行序列化及反序列化, 如果反序列化的类中定义了writeObject和readObject方法,那么虚拟机会试图调用对象类中的writeObject方法和readObject方法来进行用户自定义的序列化和反序列化操作。 ArryL 2025-10-26 04Java > java基础