在日常维护中,Java服务端的垃圾回收(GC)一直是性能瓶颈所在。当在线人数突破300人时,默认的ParallelGC会产生严重的Stop-the-world(停顿),引发封包超时断开。建议在服务器启动参数中强制指定G1垃圾回收器:
```bash
java -server -Xms8G -Xmx8G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1MaxNewSizePercent=45 -XX:MaxGCPauseMillis=50 -jar L1JServer.jar
```
配合此配置,G1GC能将单次系统停顿控制在50毫秒以内,极大地减少了卡顿现象。
经常有站长问合服或者数据库发生突然崩塌时,部分表(比如 `character_warehouse` 或者 `char_items`)报错 'Table is marked as crashed' 或者主键冲突问题。可以使用底层的REPAIR命令进行热修复。对于主键冲突,可以使用下面的SQL语句合并冲突记录:
```sql
REPAIR TABLE character_warehouse USE_FRM;
-- 批量清理无主物品(删除没有对应角色ID的无效数据)
DELETE FROM char_items WHERE char_id NOT IN (SELECT objid FROM characters);
```
修改客户端UI图片,建议使用 `L1Dec` 或者是 `SpriteReader` 软件。提取出 `Sprite.bin` 文件后,可以根据编号找到对应的贴图索引。需要注意的是,变身动作通常有16个朝向,每个朝向对应有攻击、行走、施法等8套连续动作,如果只替换了其中一部分纹理,就会导致在特定角度下人物显示成透明或者直接闪退(Missing Sprite Error)。