【问题标题】:Does Dependency Injection negatively affect the JVM's ability to optimize?依赖注入是否会对 JVM 的优化能力产生负面影响?
【发布时间】:2016-01-13 19:46:07
【问题描述】:

根据我在使用动态重新编译的 Java 优化中的理解,JVM 将根据实时分析不断地重新编译字节码部分,因此它甚至比编写良好的 C 程序还要快。我的一位同事评论说,诸如 Spring、Hibernate 或 AspectJ 之类的字节码操作技术将屏蔽掉正确动态重新编译的部分。这是真的吗?

我使用 Google Guice 进行依赖注入,我想知道优化的潜在损失是否会使其比使用普通的传统 Java 慢。

【问题讨论】:

  • 这里有几个混淆:1)Java优化什么时候和动态重新编译一样? 2) 动态重新编译和依赖注入如何与动态重新编译相关联? 3) 您能否提供“已发表评论”的来源以证实您的陈述?
  • 为什么您认为“字节码操作技术,如 Spring、Hibernate 或 AspectJ”与依赖注入有任何关系? - 他们没有,他们是不同的东西
  • 谢谢,我就是这么想的。换句话说,字节码操作对动态重新编译没有影响。

标签: java optimization dynamic jvm guice


【解决方案1】:

在大多数情况下,Spring 将使用 java 代理 (java.lang.reflect.Proxy) 来实现 @Cache 等功能,只要接口可用,并使用常规反射来进行依赖注入(当它调用 setXxx 时)属性 xxx 是 @Autowired 注释的)。

即使需要字节码操作,该字节码也存储在应用程序 ClassLoader 中,因此可供 JVM 优化。我看不出这与某些常规代码有何不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多