关于反射会导致计算机的性能下降的讨论

  在操作Java框架时,通过会用到反射技术,但是反射技术有一个缺点:会导致计算机的性能下降,因为反射占用了计算机的缓存。比如通过反射技术创建某一类的实例时,会先得到该类的构造函数,如果缓存中没有该构造函数,JVM就会创建一个构造函数,并将这个构造函数缓存起来,当下次再创建该构造函数的实例时,就不会去字节码文件中获得构造函数,而是直接通过缓存获得该构造函数,然后再创建实例对象。(可以参看Class类的中newInstance部分的源代码)

网上有这种说法,我觉得是不准确的,期待各位的指正: 

反射会导致计算机性能下降

eg:两种方式建立对象的区别

1,String str = new String ("abc")

2,Constructor con = Class.forName("java.lang.String").getConstructor(String.class)

String str2 = (String)con.newInstance("abc")

第一种方法:class--------------------------->new
Object

第二中方法:class----->Constructor---->new Object

显然第一中方法速度快,内部代码用到了缓存机制保存了默认的构造方法,而第二种方法要去加载string字节码文件让后找到选的的构造方法区new对象效率性能下降。

  我觉得导致计算机性能下降是因为jvm为了方便下一次创建实例对象,将构造函数缓存起来了,占用了计算机的缓存空间。另外,第一种方法在new对象时,也要加载类的字节码,上面这种说法只能说明反射会导致本程序的执行效率下降(time)。

关于反射会导致计算机的性能下降的讨论,布布扣,bubuko.com

时间: 2024-10-13 11:40:03

关于反射会导致计算机的性能下降的讨论的相关文章

一条sql导致数据库整体性能下降的诊断和解决的全过程

今天早上一来,数据库load就比往常高了许多.想想数据库唯一的变化是昨天早上我曾经重新分析过数据库对象. [@[email protected]] 发现数据库load很高,首先看top发现没有特别异常的进程,在数据库中适时抓取正在运行的sql也没发现异常(通常运行时间非常短的sql是不能被抓取到的).询问相关应用程序人员,最近没有变动.检查应用程序日志发现今天早上跟往常也没有过多登陆和操作.基本上可以圈定是在数据库服务器本身上面. 但是这个时候我还没有办法确定到底是哪个应用的哪个查询的问题,因为

[单选题].htaccess文件提供了针对每个目录改变配置的方法,但启用.hatccess都会导致服务器的性能下降,以及会导致一些不安全的因素。在下面的指令中,哪一个可以禁止在目录下使用该文件?

AllowOverride None AllowOverride ALL Options Indexes Deny from all 正确答案:

压力测试tps性能下降问题解决方案

压力测试tps性能下降问题解决方案 背景 测力测试时反映tps一直下滑的问题,为了重现该问题,开发一个简单交易进行测试,测试代码如下 录制该交易脚本,并放在LoadRunner11中进行测试,场景为10个用户同时启动并持续的跑.可以看到1分钟之后tps开始下降,并在后期持续下降. 此时分析服务端日志.javacore.heapdump.gc等,并未发现异常现象.修改服务端线程池相关等,但测试结果却是一如既往的下滑.记录服务端处理请求时间,发现一直很稳定,初步怀疑是客户端压力不够导致,但一直无具体

(转)一个MySQL 5.7 分区表性能下降的案例分析

一个MySQL 5.7 分区表性能下降的案例分析 原文:http://www.talkwithtrend.com/Article/216803 前言 希望通过本文,使MySQL5.7.18的使用者知晓分区表使用中存在的陷阱,避免在该版本上继续踩坑.同时通过对源码的分享,升级MySQL5.7.18时分区表性能下降的根本原因,向MySQL源码爱好者展示分区表实现中锁的运用. 问题描述 MySQL 5.7版本中,性能相关的改进非常多.包括临时表相关的性能改进,连接建立速度的优化和复制分发相关的性能改进

【翻译自mos文章】在win2003 sp1下,遇到无法解释的数据库性能下降

翻译自mos文章:在win2003 sp1下,遇到无法解释的数据库性能下降 Unexplained Database Slowdown Seen on Windows 2003 Service Pack 1 (Doc ID 464683.1) Applies to: Oracle Server - Enterprise Edition - Version 9.2.0.1 to 11.1.0.6 [Release 9.2 to 11.1] z*OBSOLETE: Microsoft Windows

立足于应用需求,看到整体性能,评价计算机的性能(任务3)

对计算机进行系统信息提取,并且给出性能评价,可以通过软件测试实现! 一. 关于硬件健康的问题,避免买到二手配件.硬盘的使用状态最有价值,如图可见,这是一个二手硬盘.内存.主板.显卡.光驱,都无法判断是否是二手货.但是,我们可以确定硬件的存在年限.可以作为是否选配机的重要参考! 二.针对计算机硬件性能测试,可以发现处理器性能.显卡性能.内存性能.磁盘性能是关注的重点内容.但是,这个图无法给出一个直观的测试结果.只能对不同的计算机测试,比较性能. 1.第一台计算机性能测试 2.第二台计算机性能测试

python+uwsgi导致redis无法长链接引起性能下降问题记录

今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因引起的. 没有办法的情况下,直接登录服务器,从uwsgi与nginx中卸载掉这个web服务,然后暴力的在命令操作符下输入python main.py,执行访问发现又正常了......狂吐血400CC...然后是各种怀疑uwsgi和nginx,查看配置与其他服务正常,排除完后只能回归到检查代码. 静下

mysql重启服务后在高峰期导致性能下降的解决办法

注意,只有在正常关闭mysql服务的情况下,才会起作用,如果采用kill -9 mysqld这种方式,热数据不会导出

sort order by导致分页语句性能问题优化

开发人员说后台查询某业务数据明细,非常慢,让我优化下, 然后我到公司平台点击页面上的查询发现花了6分钟,然后我把sql抓出来,发现是一个5个表关联的分页语句, 其中4个表只有几M,一个大表15G,小表就不用考虑了,然后我把大表拿出来单独分页查询发现同样花了6分钟,语句和执行计划如下: SQL> explain plan for    2  SELECT *   FROM (SELECT t.*, rownum AS rn           FROM  (SELECT *