我正在使用java key 存储来存储和检索加密 key 。当我的 key 存储大小很小时,它的工作速度更快。但是,一旦我的 key 存储大小增加, key 存储操作就会变慢。
我正在linux平台上工作,Java版本Jdk_1.8。和 safenet 作为提供商。
最佳答案
我一直面临着同样的问题,即不同操作系统平台的执行速度有所不同。
Jvm 将 key 存储加载到内存中。它有哈希表集合作为内部存储。
哈希表已同步。
每当您从 key 存储执行获取操作时,它都会从内存中的 key 存储而不是从物理 key 存储返回它。 您可以通过在 Linux 基础操作系统中使用 ("top"- %wa 部分) 命令来确认。
key 存储使用哈希表,这是性能下降的根本原因。
我通过在初始化项目时将 keystore 中的所有 key 加载到 ConcurrentHashMap 中解决了这个问题。后来, 所有读取操作将从 MAP 而不是 keystore 执行。 并确保所有写入操作都将在 keystore 和 MAP 上执行。
关于Java Keystore.getKey() 缓慢,同时 key 存储大小增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457864/