faq about Java8 java.lang.invoke.LambdaForm

sno*_*261 2 java lambda swing jvm java-8

试图缩小java swing程序的jre大小.使用以下命令打印所有已加载的类:

java -jar -verbose:class demo.jar >>class.txt
Run Code Online (Sandbox Code Playgroud)

在结果中,我看到一些我不知道它在哪里的东西.我正在使用jre8,以下是:

[Loaded java.lang.invoke.LambdaForm$DMH/603742814 from java.lang.invoke.LambdaForm]
[Loaded java.lang.invoke.LambdaForm$LFI/1067040082 from java.lang.invoke.LambdaForm]
[Loaded java.lang.invoke.LambdaForm$LFI/1325547227 from java.lang.invoke.LambdaForm]
[Loaded java.lang.invoke.LambdaForm$NFI/980546781 from java.lang.invoke.LambdaForm]
Run Code Online (Sandbox Code Playgroud)

java.lang.invoke.LambdaForm $ NFI和java.lang.invoke.LambdaForm $ DMH和java.lang.invoke.LambdaForm $ LFI代表什么?我检查rt.jar中的类.它没有这些类或内部类.任何的想法?谢谢!

tra*_*god 7

如此处所述,这些嵌套类用于表示lambda表单,它们用于方法句柄的实现和优化(与lambda表达式无关.)如果要缩小Java Swing的已部署JRE的大小程序,使用Compact Profiles,"为不需要整个Java平台的应用程序减少内存占用".

附录:如图所示这里,Swing是仅适用于完整的API.