美文网首页
命令行参数-Djava.security.egd=file:/d

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

作者: 一块自由的砖 | 来源:发表于2021-04-13 13:52 被阅读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读取数据。

    相关文章

      网友评论

          本文标题:命令行参数-Djava.security.egd=file:/d

          本文链接:https://www.haomeiwen.com/subject/cuzqlltx.html