-
PermGen在JDK7及之前会OOM是因为其大小固定且与堆共享内存,类加载过多(如热部署、动态代理)时无法扩容,GC回收弱,ClassLoader泄漏导致元数据持续累积。
-
方法区存储类的元数据而非对象实例,Java8后由元空间(Metaspace)实现,使用本地内存;存放类结构、常量池引用等,字符串字面量在堆中但其引用在方法区,staticfinal编译期常量值被内联;PermGen已被Metaspace替代,OOM类型变为Metaspace相关;String.intern()影响方法区引用登记;Class.forName()和defineClass()向方法区注册类元数据;类卸载需满足实例、类加载器及元数据三重回收条件。
-
使用Future的get(longtimeout,TimeUnitunit)方法可避免线程无限阻塞,结合cancel(true)能及时释放资源,提升系统稳定性。
-
LocalDate和LocalDateTime是Java8引入的不可变、线程安全的日期时间类,分别表示无时区的日期和日期时间,支持创建、解析、加减、格式化及与其他类型互转操作,结合DateTimeFormatter可处理自定义格式,推荐用于新项目。
-
答案:配置Java本地日志需引入SLF4J与Logback依赖,创建logback.xml定义控制台和文件输出格式,代码中通过LoggerFactory获取实例并使用占位符记录日志,运行后验证控制台及logs/app.log输出是否正常。
-
局部内部类必须定义在方法或代码块内,不能出现在类成员位置;只能用abstract或final修饰,不可用访问控制符或static;可访问外部类所有成员及方法中final或“事实上final”的变量。
-
用带种子的Random分层抽样可复现组卷;多信号叠加检测+服务端心跳校验防作弊;时间同步需用服务端时间戳对齐。
-
Method.invoke()调用失败的常见报错和原因直接调用Method.invoke()报IllegalAccessException或IllegalArgumentException,基本是权限或参数没对齐。Java反射默认不绕过访问控制,private方法必须先setAccessible(true);而参数类型不匹配(比如传了int却期望Integer)会触发IllegalArgumentException,哪怕看起来“值一样”。静态方法调用时,invoke()第
-
同步方法是用synchronized修饰的方法,确保多线程下同一时刻仅一个线程执行。实例同步方法锁当前对象(this),静态同步方法锁Class对象。如Counter类中increment()和getCount()通过同步保证count操作线程安全;MathUtils的静态方法doSomething()则锁定类。注意:同步降低性能,应缩小同步范围;不同对象的实例方法不互斥,静态与实例方法因锁不同也不互阻;异常时JVM自动释放锁。可改用同步代码块synchronized(this){...}细粒度控制,提升
-
POI5.2.4+(推荐5.2.5)适配JDK17+,需用poi-ooxml或poi-ooxml-lite并排除旧版xmlbeans;XWPFDocument空参构造易NPE,应传空白模板流;中文需setWordFont并配字体文件;大文档须流式写入、禁用样式缓存、避免复用实例。
-
重写toString()方法能提升对象信息的可读性,默认实现仅返回类名和哈希码,如com.example.Person@1b6d3586,无法直观展示对象内容;通过自定义输出格式,如Person{name='张三',age=25},便于调试、日志记录及集合打印,增强代码维护性,并与日志框架、IDE等工具更好协同工作。
-
Java版本选哪个才能在Mesa系统上跑起来Mesa系统(通常指基于OpenEuler/麒麟/统信等国产OS的定制发行版)对Java的支持不是“装了就能用”,关键看是否提供对应架构的JDK。x86_64没问题,但若Mesa运行在鲲鹏(arm64)、飞腾(loongarch64)或海光(x86_64兼容但需特定构建)上,jdk-17_linux-x64_bin.tar.gz这类通用包大概率启动失败——Illegalinstruction或直接报nosuchf
-
MyBatisGenerator默认不生成Mapper接口方法,因targetRuntime默认为MyBatis3;应改为MyBatis3Simple或MyBatis3DynamicSql,并注意驱动版本、驼峰映射、插件绑定等配置。
-
for循环用于已知次数的重复执行,语法为for(初始化;条件;更新){循环体},示例打印1到5。
-
LongAdder因分段累加减少竞争,在高并发写场景下性能优于AtomicLong,适合多线程频繁更新计数的场景。