相关疑难解决方法(0)

即时编译和堆栈替换之间的差异

他们俩几乎都做同样的事情.确定方法很热并编译它而不是解释.使用OSR,您只需在编译后立即转移到编译版本,这与JIT不同,后者在第二次调用方法时调用编译代码.

除此之外,还有其他差异吗?

java compiler-construction jit jvm vm-implementation

43
推荐指数
2
解决办法
7981
查看次数

抛出NullPointerException,无法抛出它

我在一段不能抛出它的代码中得到一个NullPointerException.我开始考虑在JRE中发现一个错误.我使用javac 1.8.0_51作为编译器,问题发生在jre 1.8.0_45和最新的1.8.0_60.

抛出异常的行在一个循环内部,它在一个闭包lambda函数内.我们在spark 1.4中运行这样的关闭.这条线执行了1-2百万次,我得到的错误不是确定性的,使用相同的输入,每3或4次运行一次.

我在这里粘贴相关的代码:

        JavaRDD .... mapValues(iterable -> {
                LocalDate[] dates = ...
                long[] dateDifferences = ...

                final double[] fooArray = new double[dates.length];
                final double[] barArray = new double[dates.length];
                for (Item item : iterable) {
                    final LocalDate myTime = item.getMyTime();
                    final int largerIndex = ...
                    if (largerIndex == 0) {
                        ...
                    } else if (largerIndex >= dates.length - 1) {
                        ...
                    } else {
                        final LocalDate largerDate = dates[largerIndex];
                        final long daysBetween = ...
                        if (daysBetween == 0) …
Run Code Online (Sandbox Code Playgroud)

java lambda nullpointerexception apache-spark

13
推荐指数
1
解决办法
563
查看次数