Java在Debian中的性能调优指南
apt-get autoremove清理无用软件包,使用apt-get clean和apt-get autoclean清理APT缓存,释放磁盘空间。apt-get update && apt-get upgrade将系统软件包更新至最新版本;编辑/etc/sysctl.conf优化内核参数(如增加文件描述符限制fs.file-max=65535、调整TCP窗口大小net.core.rmem_max=16777216),提升系统整体性能。openjdk-11-jdk、openjdk-17-jdk),通过apt-get install命令安装;使用update-alternatives管理多版本Java,设置默认版本(如update-alternatives --config java)。/etc/profile或~/.bashrc中设置JAVA_HOME(如export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64)、PATH(如export PATH=$JAVA_HOME/bin:$PATH),确保系统识别正确的Java路径。-Xms和-Xmx设置堆内存初始大小与最大值(建议相同,如-Xms4g -Xmx4g),避免堆内存动态调整带来的性能损耗;调整新生代(Young Generation)与老年代(Old Generation)比例(-XX:NewRatio=3,新生代占堆的1/4)和幸存区(Survivor Space)比例(-XX:SurvivorRatio=8,伊甸区与幸存区比例为8:1:1),优化垃圾回收效率。-XX:+UseG1GC),平衡吞吐量与延迟;低延迟需求推荐ZGC(-XX:+UseZGC,JDK 11+)或Shenandoah(-XX:+UseShenandoahGC);传统应用可选择CMS(-XX:+UseConcMarkSweepGC,JDK 14前)。-XX:+TieredCompilation),结合C1(快速编译)和C2(优化编译)提升热点代码执行效率;合理设置线程栈大小(-Xss2m,默认1MB),避免StackOverflowError或内存浪费。String str = new String("hello")),改用对象池(如Apache Commons Pool)或重用对象(如StringBuilder替代String拼接)。ConcurrentHashMap替代HashMap提升并发性能,CopyOnWriteArrayList替代ArrayList用于读多写少场景);优化算法复杂度(如用快速排序替代冒泡排序)。java.util.concurrent包中的高级工具(如ThreadPoolExecutor管理线程池,避免线程频繁创建销毁;ReentrantLock替代synchronized提升锁灵活性;CompletableFuture实现异步编程);减少锁粒度(如分段锁),避免线程竞争。jstat监控GC情况、jmap生成堆转储、jstack分析线程状态)、VisualVM(图形化监控JVM内存、CPU、线程)、JConsole(监控JVM指标),实时了解应用运行状态。-Xloggc:/path/to/gc.log参数开启GC日志,结合GCViewer或GCEasy工具分析GC频率、停顿时间,识别内存瓶颈(如频繁Full GC)。iostat -x 1),优化文件系统(如使用ext4或XFS),调整I/O调度器(如deadline或noop)。iftop),避免数据丢包或带宽瓶颈。