-
基于掩码的IP地址解析核心是将IP和掩码转为四段整数数组,逐段按位与运算得出网络地址;需校验每段0–255合法性,支持点分十进制与CIDR两种输入格式,同网段判定即比较网络地址数组是否完全一致。
-
String.length()返回char个数,String.codePointCount()返回Unicode码点数;因UTF-16中代理对(如emoji、部分汉字)占2个char,故二者结果可能不同。
-
标记清除算法导致老年代内存碎片的核心原因是只回收垃圾对象而不移动存活对象,使空闲空间离散分布;老年代对象长期存活、数量多且体积大,无法采用复制算法,只能就地标记清除,最终因缺乏连续空间而频繁触发FullGC甚至OOM。
-
必须通过反射获取theUnsafe字段并setAccessible(true),JDK9+还需--add-opens参数;allocateMemory返回的地址需手动管理生命周期,重复free或越界访问将导致JVM崩溃。
-
Java9起接口可用private方法抽取多个default方法共用逻辑,既复用代码又不暴露给实现类;它专用于接口内部封装校验、日志、格式化等重复行为,仅限本接口内default或static方法调用,不可被实现类访问或反射调用。
-
局部类通过编译器生成私有字段并构造时传入值或引用,将effectivelyfinal变量“搬家”到堆上与实例绑定共存亡;修改其指向对象内部状态可绕过final限制。
-
WeakHashMap用于变量元数据缓存的核心优势是自动解耦生命周期,避免内存泄漏:键对象失去强引用后条目自动失效,值需自主管理,不适用于长期配置场景。
-
Arrays.hashCode()对一维数组内容深度哈希,确保相同元素顺序和值产生一致哈希;二维及以上数组须用Arrays.deepHashCode();自定义类需重写hashCode()与equals()且基于不可变字段;推荐封装为final不可变键类并深拷贝数组。
-
maximumPoolSize是线程池应对突发流量的弹性缓冲上限,仅在corePoolSize满且workQueue满时触发创建非核心线程,达上限后任务走拒绝策略;需按IO/CPU密集型合理设定,并配合动态调节、有界队列与监控压测。
-
Arrays.asList()返回固定长度List,不可增删;因其实现类未重写add/remove,调用抛UnsupportedOperationException;基本类型数组会被整体当作单个元素,应改用包装类型或Stream处理。
-
OperatingSystemMXBean.getFreePhysicalMemorySize()返回操作系统当前完全未被使用的物理内存字节数,Linux对应MemFree,Windows/macOS则包含可快速回收内存,与JVM堆内存无关。
-
ByteArrayInputStream是Java中基于字节数组的内存输入流,构造时复制数组确保安全,支持标准InputStream方法及mark/reset(readlimit无实际限制),适用于单元测试、协议解析等中小数据量场景。
-
JDK21的RecordPatterns支持多层嵌套record的直接解构,但要求每层均为record类型,不支持class或非record的sealed实现类;编译和运行需启用预览特性,且IDE和依赖需同步配置。
-
false是Java中boolean类型的独立布尔字面量,非零非空;它是类字段默认值,但局部变量必须显式初始化,且不可与Boolean包装类混淆,否则易引发NullPointerException。
-
setAccessible本身不直接引发锁竞争,但高并发下会放大JVM访问检查、模块校验等开销,导致CPU热点和线程争用;优化需缓存Field/Method、静态复用、避免循环内重复调用,并优先采用VarHandle或编译期生成替代反射。