相关疑难解决方法(0)

JVM是否会阻止尾调用优化?

我在这个问题上看到了这个引用:什么是构建Web服务的好函数语言?

特别是Scala不支持尾调用消除,除了自递归函数,这限制了你可以做的组合种类(这是JVM的一个基本限制).

这是真的?如果是这样,那么创建这个基本限制的JVM是什么呢?

java jvm scala tail-recursion

98
推荐指数
4
解决办法
2万
查看次数

为什么将类定义为final会改善JVM性能?

引自http://sites.google.com/site/gson/gson-design-document:

为什么Gson中的大多数课程都被标记为最终?

虽然Gson通过提供可插拔序列化器和反序列化器提供了相当可扩展的架构,但Gson类并未专门设计为可扩展.提供非最终类将允许用户合法地扩展Gson类,然后期望该行为在所有后续修订中工作.我们选择通过将类标记为final来限制这样的用例,并等到出现良好的用例以允许扩展性.标记类final也有一个很小的好处,即为Java编译器和虚拟机提供额外的优化机会.

为什么会这样?[如果我猜测:JVM知道类是最终的,它不维护方法覆盖表?还有其他原因吗?]

性能有什么好处?

这是适用于频率实例化的类(POJO?)还是适用于持有静态方法(实用类)的类?

定义为final的方法在理论上也可以提高性能吗?

有什么影响吗?

谢谢你,马克西姆.

java optimization performance jvm final

42
推荐指数
2
解决办法
1万
查看次数

过时的Java优化提示

有许多性能提示被Java编译器淘汰,尤其是Profile-guided优化.例如,这些平台提供的优化可以极大地(根据来源)降低虚拟函数调用的成本.VM还能够进行方法内联,循环展开等.

你现在使用的其他性能优化技术有哪些,但实际上已经被更现代的JVM中的优化机制淘汰了?

java optimization performance

42
推荐指数
4
解决办法
2万
查看次数

杀手设施或场景会使另一个JVM成为比Sun JVM更好的选择吗?

对于Java SE,有几个JVM可用于在x86上的生产中运行:

加上一些在服务器上运行的自定义产品:

其他平台:

  • Sun Solaris JVM - 比x86更好的可伸缩性?
  • (编辑)用于Java的GNU编译器 - http://gcc.gnu.org/java/ - 可以在多个平台上编译为本机代码.

Sun JVM与jvisualvm程序具有明显的优势,该程序允许运行时检查运行代码.是否有任何其他JVM的技术优势可能使其成为开发和/或生产的更好选择?

换句话说,是否有一个杀手级设施或场景可以在另一个JVM上投入时间/精力/金钱?

(如果它们是一个不错的选择,还请建议其他JVM).

java jvm

23
推荐指数
4
解决办法
1855
查看次数

JVM实现之间的差异

JVM实现在哪里不同(许可除外)?每个JVM是否都为通用处理实现Type Erasure?

两者之间的区别在哪里:

  • JRockit的
  • IBM JVM
  • SUN JVM
  • 打开JDK
  • blackdown的
  • kaffe的

.....使用Tail-Call-Optimization处理其中一个?

java generics jvm jvm-languages tail-call-optimization

18
推荐指数
2
解决办法
1万
查看次数

Java监视器有多重?

假设我有一个包含数千个对象的数组,以及可能访问每个对象的少量线程.我想保护对其中一个对象方法的访问.最简单的方法是将该方法声明为synchronized.但是,这可能会导致创建数千个监视器,无论它们是以何种方式实现的.如果这是Win32,我永远不会创建数千个内核对象,如Mutex,但CRITICAL_SECTION 可能是合理的.我想知道Java的情况如何.鉴于争用的可能性很低,监视器的使用是否会超过他们所需的大量内存?在Java中使用这种低粒度同步的做法有多常见?

(显然有一些解决方法,例如使用更小的同步对象数组,可以使用一些哈希来访问.我不是在寻找一个实用的解决方案,我正在寻找一个洞察力).

java performance synchronization monitor

15
推荐指数
2
解决办法
1833
查看次数