使用javassist在运行时强制所有Java算法进行strictfp?

时间:2013-06-26 15:47:24

标签: java private bytecode javassist strictfp

鉴于编写了性能的Java应用程序(即在源代码中故意不将方法声明为'strictfp'),是否可以允许用户以strictfp模式运行整个应用程序?

看起来粗略的方法是使用使用javassist编写的自定义类加载器简单地将“strictfp”属性添加到所有类的所有方法。这类似于:

http://www.verious.com/qa/no-strictfp-in-scala-workarounds/

但是,类加载器需要将strictpf属性添加到应用程序中的所有类方法,包括私有方法。 (该应用程序过于庞大和复杂,无法明确列出可能需要strictfp属性的所有可能方法。)

javassist中的反射API似乎不支持列出私有方法:

http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/html/javassist/CtClass.html#getMethods()

我想在javassist中做什么(或者通过自定义类加载器方法)?

1 个答案:

答案 0 :(得分:2)

我不知道这是否会对您有所帮助,但是如果您可以更改为使用Oracle JRockit JVM,它有一个JVM选项可以全局启用strictfp - '-XX +: - StrictFP`

(Hotspot JVM上有一个'-XX +: - UseStrictFP'选项,但它与你想要的效果相反。)

参考: