小编Ali*_*vei的帖子

什么?!通过方法句柄进行无操作 254 元方法调用为 3 MiB 与 36 MiB

可以看出(请参见下面重写的测试用例),当由其工具编译和运行时,254 元方法的方法句柄在 Java 17 中占用的内存少于 Java 11 中的内存。

由于 Java 版本1117的发行摘要中没有宣传与方法句柄或反射相关的功能,所以我很好奇:哪些变化有助于减少内存消耗?


这是一个重写的测试用例ArityLimits.java

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Supplier;

class ArityLimits
{
    public static void main(String[] args) throws Throwable
    {
        // Pick an implementation with the 1st argument, e.g. core.
        final Invocable invocable = (args.length > 0
                    && args[0].equalsIgnoreCase("core"))
            ? new CoreInvoker(ArityLimits::new)
            : new HandleInvoker(ArityLimits::new,
                MethodHandles.privateLookupIn( …
Run Code Online (Sandbox Code Playgroud)

java memory jvm version methodhandle

-1
推荐指数
1
解决办法
104
查看次数

标签 统计

java ×1

jvm ×1

memory ×1

methodhandle ×1

version ×1