gzk329 最近的时间轴更新
gzk329

gzk329

V2EX 第 458220 号会员,加入于 2019-12-09 14:32:10 +08:00
根据 gzk329 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
gzk329 最近回复了
156 天前
回复了 gzk329 创建的主题 Kubernetes 有什么最稳妥的 K8s 部署方法吗?
我的就是 mac ,然后用 dockerdesktop 启动了 k8s 但是我的端口永远开不开,外部连不到我本机的 k8s 集群,本地可以连本地
@boobo 就是我把这个字段,存到 redis 中,关系型数据库表里,这个字段留空,提高我入库效率。
这个问题我后来定位出来了,使用 JDK 8
try-with-resource 机制 自动关闭 Files.newOutputStream 生成的流,流正常关闭,堆外内存释放,但是 java.lang.nio.Bits 中的 reserveMemory ,这个内存占用没有被清理,多次操作之后会 OOM 。
改写为 try-with-resource 机制 自动关闭 FileOutputStream 流,就不会有这个问题。
所以推断是 JDK 的 bug
@linyimin520812 用的是 JDK8
java -jar springboot.jar --conf=value 每次变化的就是 value ,但是 spring 项目启动太慢了,想加快这个速度。但是这个 springboot.jar 又不是我的,所以对其内部的改动最好不要很大。
改动需要外置,就是这个 springboot 的程序 jar 包不能动
定位出一个 jdk 的 bug 了,给 oracle 提了 bug ,多久会有邮件回复啊?
我研究了下好像是因为使用方式的问题,multipartFile.getBytes()这种方式会导致直接内存区使用增加,还不会释放,
multipartFile.transferTo(tempFile)这个方法就不会。

multipartFile.getBytes() 这个方法好像是会拷贝一份 byte[]出来,但是这种不是应该在堆内吗,用完了也就 GC 了,咋会导致直接内存区不断增,一直到溢出啊?

// try (OutputStream out = Files.newOutputStream(tempFile.toPath())) {
// out.write(multipartFile.getBytes());
// } catch (IOException e) {
// e.printStackTrace();
// }
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5502 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 07:25 · PVG 15:25 · LAX 00:25 · JFK 03:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.