Claes Redestad在core-libs-dev邮件列表上发布了消息“ RRF:8187123 :(反映)Class#getCanonicalName和Class#getSimpleName是性能问题的一部分 ”,他在邮件列表中要求审查建议的更改“以启用缓存”的另一方面,getCanonicalName和getSimpleName ,重复这已报告是一个性能瓶颈的电话。” 他补充说:“缓存将这些方法的性能提高了20倍。”

解决性能问题的一个明显解决方案可能是将类的名称作为字段添加到Class类定义中,但是Redestad在关联的错误JDK-8187123中指出:“我们应避免在java.lang中添加更多字段。班级 。” 取而代之的是,该错误的解决方法是“ 背负在ReflectionData中缓存的其他反射信息 ”。

ReflectionData是在Class类中定义的一个嵌套( private static )类。 Class类对ReflectionData的引用定义为:

private volatile transient SoftReference<ReflectionData<T>> reflectionData;

Class实例包含对嵌套类ReflectionData的实例的软引用 ( java.lang.ref.SoftReference )。 用于SoftReference的类级别的Javadoc指出,“软引用是由垃圾收集器根据内存需求自行决定清除的”,并且软引用“最常用于实现对内存敏感的缓存”。 这似乎是平衡性能和内存问题的不错的解决方案。

邮件列表消息引用了对Class.java的建议更改的链接 。 回顾这些更改,您可以快速看到建议的代码更改如何将三个新的String添加到ReflectionData实例中包含的属性中,以表示规范名称,简单名称和类型名称。 当然,三种方法提供向这些细节[ 另一方面,getCanonicalName() , getSimpleName() ,和getTypeName() ]被改变为使用这些值。

在撰写本文时, JDK-8187123尚未与特定的Java版本关联。

翻译自: https://www.javacodegeeks.com/2018/05/faster-repeated-access-to-java-class-names-coming-to-java.html

更快地重复访问Java的Java类名?相关推荐

  1. java 类名重复_更快地重复访问Java的Java类名?

    java 类名重复 Claes Redestad已在core-libs-dev邮件列表上发布了消息" RRF:8187123 :(反映)Class#getCanonicalName和Clas ...

  2. “else if”是否比“switch()case”更快? [重复]

    本文翻译自:Is "else if" faster than "switch() case"? [duplicate] Possible Duplicate: ...

  3. java 虚拟机 Java内存结构 JVM垃圾回收机制算法

    什么是HotSpot VM 提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机. 但不一定所有人都知道的是, ...

  4. 大连 oracle培训,大连哪里培训java专业(Java的数据类型)

    大连哪里培训java专业,我们可以利用时间了解大连java编程培训,通过看更多的文章来提升自己,比如了解未来技术发展方向,接受有效的指导或参加培训,重视接口学习,掌握静态方法和属性,java分布性,J ...

  5. 更好的Java虚拟机Zing: 更好的性能,无停顿,更快的启动

    Zing虚拟机文档Understanding Java Garbage Collection(了解Java垃圾收集) 首先说明这个Zing是收费的,但是他也是优秀的,我觉得我们可以研究下他的一些思想对 ...

  6. java native堆_Java Native Memory比堆更快吗?

    执行IO时,直接内存更快,因为它可以避免一个数据副本.但是,对于95%的申请,您不会注意到差异. 您可以将数据存储在直接内存中,但是它不会比存储数据POJO快. (或安全,可读或可维护)如果您担心GC ...

  7. java 一个数组key一个数组value_在各种语言中,使用key在map中获取value 和 使用下标获取数组中的数据 相比哪个更快?...

    数组和集合的效率问题数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素.但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变的 ...

  8. Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗?

    Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗? Python到底是什么样的语言? 解析: 这里是一些关键点:Python是解释型 ...

  9. 哪个更快:Java 堆还是本地内存

    使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放.当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配.堆会被垃圾回收器进行管理,并且它会在对象超出作用域时进行内 ...

最新文章

  1. CentOS安装EMACS文件夹树型图插件与颜色插件
  2. 第 3 章 kickstart
  3. qgc地面站如何导入离线地图_QGC地面站工具下载 QGroundControl(QGC地面站软件) v2018.11.02 免费安装版 下载-脚本之家...
  4. 剑指offer-旋转数组的最小数字
  5. 021_jdbc-mysql入门
  6. python语言的类型是_Python语言类型
  7. c++ 方向_GE医疗C型臂系列手术机设备全球装机量破万
  8. 《统计会犯错——如何避免数据分析中的统计陷阱》—第2章置信区间的优势
  9. 900万注释图像数据集升级了!谷歌开放Open Images V6,首增语音、文本、鼠标轨迹同步注释...
  10. 5g通用模组是什么_中国联通发布《5G通用模组白皮书V2.0》
  11. Linux Linux程序练习十(网络编程大文件发送)
  12. C语言单片机串转并,74ls164与单片机的串并转换(串转并\串进并出)
  13. linux改文件夹e45,linux 编辑文件时 E45: 'readonly' option is set (add ! to override) 隐藏属性 chattr lsattr...
  14. C语言关键字浅析-enum
  15. leetcode系列-链表
  16. 【泛微ecology sql】待办、已办、办结流程查询语句
  17. 天猫“大数据”杀熟,如何避免多花冤枉钱方法总结
  18. 《第一行代码》12.2学习中遇到的一些问题and心得
  19. 软件相貌测试准确吗,相貌测试(史上最准的颜值测试)
  20. 数据告诉你,火锅为什么能成为聚餐的首选

热门文章

  1. 动态规划训练22 [Milking Time POJ - 3616 ]
  2. SpringBoot2.1.9 多Redis Jedis配置
  3. 依存句法分析的任务以及形式化定义
  4. html的<input type='radio'/>change事件坑
  5. JAVA多线程和并发面试问题
  6. 8张图带你轻松温习Java知识
  7. (九)Spring 事务开发、事务属性详解
  8. ArrayList如何对某个对象的日期属性排序?
  9. 【最全最详细】publiccms实现将公共部分提取成单独模块引入
  10. 好多人都说存储过程很难?认真看这篇文章就够了