@[踩过的坑:Java引入自定义字体吃光硬盘]
问题描述
有个生成学生活动证书的需求(在给定的证书模板上动态写上用户个性化信息,用java.awt.Graphics2D对下画的)。有天生成一个全国活动的证书,在Job刚执行完就被运维告知job那台服务磁盘被打满了。。。😅😅😅
问题定位
发现服务器上/tmp里增加了很多临时文们:+~JF3585940841257272436.tmp
[root@XXX-*-*-*-* tmp]# lsof +d /tmp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 31290 root 2382r REG 8,3 8364840 21286020 /tmp/+~JF968570048742267177.tmp
java 31290 root 2383r REG 8,3 8364840 21286022 /tmp/+~JF1097947168992793740.tmp
...贼多贼多...
去搜了下+~JF文件发现是引入自定义字体产生的。
看了下源码定位产生临时文件代码如下:
获取本地字体产生问题实现
// 获取思源黑字体(产生问题写法)
private static Font getSelfFont() {
Font font = null;
try {
InputStream inputStream = ImageHelper.class.getClassLoader()