java 反射内存申请/浪费问题

 

反射字段动态get,内存申请/浪费

1. get() 会自动创建封装类对象,导致内存浪费 

2. 使用基本getInt()方法,直接返回基础类型,内存使用低


使用反射字段,get动态获取字段值,测试内存申请情况

    public static class C1 {
        private int i1;

        public int getI1() {
            return i1;
        }

        public void setI1(int i1) {
            this.i1 = i1;
        }
    }

    @Test
    public void relectionTest1() throws IllegalAccessException, NoSuchFieldException {

        C1 c = new C1();
        c.setI1(123456383);

        Field f = C1.class.getDeclaredField("i1");
        f.setAccessible(true);

        int s = 0;
        long n = 10000000000l;
        for (long j = 0; j < n; j++) {
            for (long i = 0; i < n; i++) {
                Object i11 = f.get(c);
                int i1 = (int) i11;
                // int i1 = f.getInt(c);
                s += i1;
            }
        }
        System.out.println("test n:" + n + "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值