原标题:CLR与JVM
首先要纠正垃圾回收在于JVM和.NET的CLR的平台功能而不是语言本身。
存在一些历史差异主要是因为.Net的设计是从java(和其他基于gc的平台)演变中吸取教训改良后的结果。
CLR一开始就设计成了分代垃圾回收,但是初始JVM没有分代垃圾收集器。第一代的JVM垃圾收集器往往是Mark和Sweep这样简单。但随着发展,JVM已引用了分代垃圾回收机制
JVM提供了大量选项来调整GC各个方面或者在不同模式直接 的切换,例如
相比之下,CLR几乎没有提供这样繁琐个性化配置,CLR通过不断优化.NET或者.NETCore的性能来达到通用高性能和依靠服务器端的性能收集器来进行优化,最新基准测试.NETCore的性能已经在前几相当可观,避免开发人员花大量时间在clr调优又能享受极高性能,更关键的是可让所有应用无关底层平台配置而进行快速升级,而JVM提供的底层配置可不断修改jvm配置以适应业务发展,但是,这样个性化配置也是一把双刃剑,JVM调优不是一件容易的事,他是几十个配置叠加的效果,往往并不只是把GC频率和调大调小那样简单,另一方面这些JVM的优化只是用来掩盖问题的手段。真正为何引发性能问题而往往被忽视,到最后还是不得不去寻找问题根源