我想知道在Spring Integration中使消息不可变的原因是什么.
是否仅仅是因为多线程环境中的线程安全性?
性能?如果每次要在现有消息中添加内容时必须创建新消息,是否会导致性能下降?
通过引用传递时避免一系列错误?只是在这里猜测.
我正在尝试使用FlightRecorder和MissionControl来分析Java应用程序,并且我得到了一些与lambda函数相关的错误.该应用程序运行完美 - 错误仅出现在FR/MC中.
简单程序:
import java.util.function.Supplier;
public class TestClass {
public static void main(String[] args) {
Supplier<String> s = () -> "VALUE"; // <- error at this line
}
}
Run Code Online (Sandbox Code Playgroud)
Java版本:
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)
JVM args:
-XX:+UnlockDiagnosticVMOptions -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=delay=0s,duration=10s,filename=recording.jfr,settings=profile
Run Code Online (Sandbox Code Playgroud)
FlightRecorder报告的Java错误(在MissionControl中打开recording.jfr并转到Events-> Log):
Class java.lang.NoSuchFieldError thrownClass class
Message method resolution failed message text
Event Thread main (thread) thread
Error.<init>(String) line: 71
LinkageError.<init>(String) line: 55
IncompatibleClassChangeError.<init>(String) line: …Run Code Online (Sandbox Code Playgroud)