命令行参数-Djava.security.egd=file:/d

2021-04-13  本文已影响0人  一块自由的砖

背景

在java开发中广泛使用SecureRandom,产生可靠随机数。但在大量产生随机数的场景下,性能会较低。

引起原因

SecureRandom产生下一个随机数的时候调用nextLong或者nextBytes,最终会调用SecureRandom的nextBytes。而nextBytes是一个同步的方法,在多线程使用时,可能会产生性能瓶颈。

解决方法

使用 -Djava.security.egd=file:/dev/./urandom 加快随机数产生

解决原理

/dev/random在产生大量随机数的时候比/dev/urandom慢,所以,建议在大量使用随机数的时候,将随机数发生器指定为/dev/./urandom。

hotspot需要使用配置项-Djava.security.egd=file:/dev/./urandom才能从urandom读取数据,如果是openjdk已经做了优化,直接从urandom读取数据。

上一篇下一篇

猜你喜欢

热点阅读