假笨说-从一起GC血案谈到反射原理
还有一个问题是:
面试时候有面试官提出,在用asm生成字节码class的时候,是会比较慢的。然后在pb的反序列化中打开了通过反射获取的参数,导致层层的通过反射获取字段时,正好在大并发下,进行了嵌套的生成字节码的各个类的耗时操作。最终导致业务请求被delay,时间可以持续到7分钟上。
处理方案是将pb的反射反序列化改成不使用反射。
这一点还是需要自己验证下,其实通过反射写代码原则上因为有softrefer的存在,都有可能触发到生成大量字节码的class的情况。
现有想到的方案是,如果自己确实需要使用反射,自己用一个全局变量引用method,同时,设置noInflation为true,在初始化的时候,就反射调用一次,直接使字节码的class就已经存在。