java反射的性能为什么低

 我来答
小傻

2015-11-16 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31135
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部
java反射需要将内存中的对象进行解析,涉及到与底层c语言的交互,速度会比较慢。
java反射得到的每一个Method都有一个root,不暴漏给外部,而是每次copy一个Method。具体的反射调用逻辑是委托给MethodAccessor的,而accessor对象会在第一次invoke的时候才创建,是一种lazy init方式。而且默认Class类会cache method对象。目前MethodAccessor的实现有两种,通过设置inflation,一个native方式,一种生成java bytecode方式。native方式启动快,但运行时间长了不如java方式,个人感觉应该是java方式运行长了,jit compiler可以进行优化。所以JDK6的实现,在native方式中,有一个计数器,当调用次数达到阀值,就会转为使用java方式。默认值是15。java方式的实现,基本和非反射方式相同。
百度网友9308069
推荐于2017-10-01 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1938万
展开全部
除非是开发中间件,没必要用反射。
反射毕竟是针对语言自身的。
针对最终用户的开发。如果需要反射,说明设计有问题。检讨设计吧。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汐日南莘
推荐于2017-09-03 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7637万
展开全部
java反射是要解析字节码,将内存中的对象进行解析,包括了一些动态类型,所以JVM无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多!

反射:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0adf2dfc62
2014-02-17 · TA获得超过578个赞
知道小有建树答主
回答量:553
采纳率:50%
帮助的人:216万
展开全部
反射是要解析字节码,做翻译工作肯定要慢一些的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式