-
合理配置JVM参数、选择适合的垃圾回收器、控制线程与连接资源、启用监控诊断是保障Java应用稳定运行的关键。1.设置-Xms和-Xmx相等(如4g)以减少堆调整开销;2.避免堆过大,超8GB考虑G1或ZGC;3.限制元空间至256m防止溢出;4.调整-Xss256k降低线程内存占用;5.吞吐场景用ParallelGC,低延迟选G1GC,极致低延迟用ZGC;6.开启GC日志便于分析;7.使用线程池和连接池控制资源;8.防止死锁与阻塞,设置超时与非阻塞锁;9.监控线程数变化;10.启用JMX、APM工具实现可
-
next()和nextInt()不消费换行符,导致后续nextLine()读到空字符串;应加scanner.nextLine()清理或统一用nextLine()转换;nextInt()遇非数字抛异常且卡住,需hasNextInt()预判或捕获后next()清除;next()读单词,nextLine()读整行;Scanner关闭后不可恢复,建议全局单例。
-
==比较内存地址,equals()比较内容。String等类重写equals()后可比较逻辑相等性,自定义类需重写equals()和hashCode(),避免null调用,包装类型慎用==。
-
IllegalArgumentException应在参数不合法时抛出,如数值越界、字符串为空等;通过try-catch捕获并处理,结合前置校验、默认值回退、用户提示和日志记录,提升系统健壮性。
-
Date构造器年份参数是距1900年的偏移量,如newDate(2024,0,1)实际为2924年;月份从0开始;该构造器已弃用,应改用LocalDateTime或Calendar;SimpleDateFormat非线程安全;Calendar.DAY_OF_WEEK与日常认知不一致,建议用LocalDateTime.getDayOfWeek();set()惰性设置,add()立即计算;时区易出错,推荐用toInstant()或Instant过渡。
-
怎么用Thread.currentThread().getStackTrace()拿到当前方法名Java没有像Python的inspect.currentframe().f_code.co_name那样直白的API,最常用、最轻量的方式就是靠getStackTrace()手动解析堆栈数组。它返回StackTraceElement[],索引越小越靠近当前调用点。关键在于:你调用它的那一行,本身会出现在堆栈第2或第3层(取决于是否在静态工具方法里封装),不是第0层——第0
-
MetaspaceOOM不是堆内存问题,因为Metaspace使用本地内存、不受-Xmx控制,其OOM主因是动态代理类等元数据堆积且ClassLoader未卸载。
-
Java数组是堆中对象,含对象头、长度字段和元素数据区;引用存栈中,基本类型数组存值,引用类型数组存地址。
-
CompletableFuture.allOf返回null因其只等待完成而不聚合结果;需用List存储各任务,allOf等待后遍历调用join()或get()获取结果。
-
首先定义图书类Book封装信息,再通过Library类实现增删改查功能,最后用Main类结合Scanner完成用户交互,构建一个基础的Java图书管理系统。
-
用Swing因JDK8–17默认支持、无需额外配置,组件命名直白、布局简单、单文件可运行;解析算式需过滤非法字符、用双栈法计算、捕获除零异常;按钮事件须清空输入、校验小数点、禁用无谓setEnabled;StringBuffer拼接高效且便于退格与括号校验。
-
Calendar.get(WEEK_OF_YEAR)不可靠,因依赖Locale的首日和最小天数;正确做法是锚定日期推算周一/周六;SimpleDateFormat解析会清空时分秒;set后须调getTime()刷新;Java8+推荐用LocalDate+TemporalAdjusters。
-
Java文档注释不生成Javadoc的根本原因是项目未被IDEA正确识别为Java模块,需确保pom.xml或build.gradle已导入、源码路径标记为SourcesRoot,并在ProjectStructure中配置正确的JDK和模块SDK;生成时须手动指定含javadoc.exe的JDK路径,添加UTF-8编码参数,可见性选Package才能包含package-private类,而生产环境推荐使用Maven/Gradle命令行生成以保障稳定性和定制化能力。
-
魔术数字是指未解释、无来源、突然出现且反复复用的字面量,如if(status==3),导致修改困难、易出错、理解成本高;应按语义位置、上下文命名、类型安全(优先枚举)三原则替换为常量,并聚焦HTTP码、业务规则值、协议字符串等高风险项。
-
根本原因是Eclipse未触发Maven项目刷新或本地仓库异常,需右键“UpdateProject”并勾选强制更新,同时检查.settings、.classpath、settings.xml配置及清理.lastUpdated文件。