Net Core已经开源好几年了, 为啥不像JVM那样很多人研究和调优其GC算法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Net Core已经开源好几年了, 为啥不像JVM那样很多人研究和调优其GC算法?相关的知识,希望对你有一定的参考价值。

参考技术A 我们已经上线了好几个.net core的项目,基本上都是docker+.net core 2/3。说实话,

.net core的GC非常的优秀,基本上不需要像做Java时候,还要做很多的优化。因此没有多少人研究很正常。换句话,如果一个GC还要做很多优化,这肯定不是好的一个GC。当然平时编程的时候,常用的非托管的对象处理等等还是要必须掌握的。

这和国内的开发环境有很大关系。

一方面,这里有个路径依赖的问题,这个问题在国内尤为突出。这几年,国内其他语言的开发者多一些,生态好一些,转换则意味着成本。

另一方面,浮躁之风过盛,拿来主义盛行。这里举两个例子来说明。一个是国产操作系统的内核问题。为什么要使用linux内核而不是重新写一个呢?给出的理由无非是linux生态好,稳定,没有必要进行重复制作。真的没必要吗?那国外为什么流行要用rust重新写几个,而且开源呢?“没必要”是假,“不想”才是真,毕竟基础建设周期长,成本高,没有拿来主义好呀。另一个例子是最近matlab在国内停止授权的事情。在这件事情上,很多人都觉得问题不大,问题不大的原因在于还有一个开源的scilab可以拿来用。

举这两个例子,也许不太妥切,但是,管中窥豹,略见一斑,也足以说明时下的浮躁氛围了。

既然这里说到net core底层问题,今年新出的《.NET Core底层入门》,也许值得一读。这是国内的研究者写的,从中可以看出国内在这方面的进展,也说不定。总而言之,虽然net core已经开源了几年,但是在国内,开发者的成长和生态的建设,还需要更长的时间。

因为不需要,java就像半成品,无论是语法 编译器 等等,要是没有spring系列,估计那些996早就变成了007了。

微软的产品化能力是有目共睹的,.net比起JAVA体系,更加完善,包括产品本身和后期的维护都比JAVA好,所以商业化项目最好还是用. net平台。

这似乎挺正常的,如同它购买了GitHub后,众开源项目就纷纷迁移GH。开源社区普遍不信任微软,其意定非在开源本身。.Net 开源估计也是市场占有率在降,没人真心愿意用它。

.net core,哪里还需要什么GC优化?那是jvm天生缺陷导致的问题。.net 5再性能上更进一步,只要你的程序不是写得稀烂,根本不用操心底层运行时的性能会出问题。

不能用jvm的眼光看.net,java界已经进入固步自封的状态,版本更新那么快,实质性的东西并没有什么突破。而很多公司坚守在java1.6上不放手,实在顽固。

优化肯定是需要的,再好的程序都是有优化空间的。只是现在dotnet平台上目前缺少大型的应用。正常的业务场景下,难以达到框架性能的瓶颈。

dotnet 虽然开源了,但是开源太晚。要是早几年,在android兴起之前,在大数据兴起之前,现在还会是这般场景吗。眼看着国内的大企业一波波地转向了Java和其他语言,作为一名dotnet程序员心里是大大的不甘心。

dotnet 在语言层面相比 Java 有太多优势,Java 新版新增的一些语言特性也都是照抄的 dotnet。但即便是这样,依然是叫好不叫座。

开源太晚,错过了几波行业发展红利。以至于现在,大数据领域缺 Hadoop,搜索领域缺 Elasticsearch ,移动端虽有xamarin,但依然是鸡肋般的存在。要是有这些杀手级应用在,dotnet 生态肯定会繁荣起来,向着更强的方向优化。

还能说什么呢,只能期望即将到来的dotnet 5 能一统现在混乱的局面,发挥好自己的特长,繁荣dotnet的生态环境。

首先.net的原装GC一直都不错。流畅到可以支持3D 游戏 开发。所以不怎么需要调优。要知道文章多不用不一定是好事,95%的技术文章其实只不过是要解决一个BUG而已。其次C#的语法和运行时设计也好,对GC的压力小很多。比如范性支持基本类型,这样List 之类的结构,是整体分配和释放的。而某蛙就需要每个元素拆箱装箱。慢死,对GC来说也要算更多的引用链。此外C#还支持matrx4x4之类的SIMD数据类型。也是提高运行速度和减少GC的好东西

这些东西已经优化的非常好了,程序员不需要关注这些,让程序员更多的精力放在业务实现上。

相对java来说.netcore的语言更加优雅,高级和完善,所以,不需要关注相对比较底层的东西。

很简单:没有关键业务跑在 net core 上。

曾经,jd 业务用 .net,但几年后就全换成 Java 了。这足以说明问题了。

像 zhihu 这种小厂,开始用 python,业务量大了之后就转 golang ,而不是转 net core 。足以说明问题了。

有人说,netcore 如何如何好,根本不用自己优化……。实际上根本没达到极限,不到优化的时候。

.NET Core & ASP.NET Core 1.0

.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布

众所周知,Red Hat和微软正在努力使.NET Core成为Red Hat企业版Linux (RHEL)系统上的一流开发平台选项。这个团队已经一起工作好几个月了,RHEL对.NET有许多需求。今天在RedHat 峰会DevNation 上宣布了.NET Core & ASP.NET Core 1.0 RTM。Red Hat有一个新的关于在RHEL上更简单的使用.NET Core的选项。(DevNation是一场全栈开发大会,将共同探讨开源的最优秀特性。DevNation 2016由50多场小分会和全体大会组成,其中也有4场涉及到.NET Core相关议题,具体可以访问 http://www.devnation.org/ 。

 

在微软的Build 2016开发者大会上Redhat成为了.NET 基金会的技术指导小组成员,Redhat 同时为.NET开发人员启动了一个新站点:redhatloves.net, 微软今天在Redhat的峰会的DevNation上发布 .NET Core 以及 ASP.NET Core 1.0,并提供了下载,详见官方发布博文 Announcing .NET Core 1.0 。三星也加入了.NET基金会。

 

  本次微软放出的下载中(https://www.microsoft.com/net/download),包含了 .NET Core Runtime, .NET Core SDK, .NET Core VS Tooling (包括 Web 开发工具), .NET Core Windows Server Hosting, 以及更新的 NuGet ASP.NET Core 1.0 和 Entity Framework Core 1.0 包。微软还发布了用于创建 .NET Core 项目的 Visual Studio 和 Visual Studio Code 扩展,以及 .NET Documentationhttps://docs.microsoft.com/zh-cn/)。Redhat 也发布了相关博文介绍如何在Redhat 企业版Linux上开发.NET core应用http://rhelblog.redhat.com/2016/06/27/net-core-on-red-hat-enterprise/

 

     开源方式是人们自由分享想法并且基于他人成果进行开发和创新的协作形式,推动了包括医疗、教育、政府、管理在内的等多个领域的巨大进步。开源促成了多个技术领域的数字化转型,并且推动着重大的创新,包括云计算、容器、应用开发、DevOps、大数据、移动、安全等。  对于.NET开发人员来说,现在是一个很好的机会去通过你已有的技能来研究各种.Net 技术。如果你不是一个.NET开发人员,是时候再考虑下.NET了!.NET体系里包括了工具、API和为各类开发人员提供的服务,以方便开发者创建各类应用程序。

 

      凌晨的Red Hat DevNation 2016 使用的直播是youtube,很多同学没有看,期待后续在channel9的视频回顾,这里用照片和大家回顾下激动人心的发布:

 

dotnetcorertm1dotnetcorertm2dotnetcorertm3dotnetcorertm4dotnetcorertm5dotnetcorertm6dotnetcorertm7dotnetcorertm8

以上是关于Net Core已经开源好几年了, 为啥不像JVM那样很多人研究和调优其GC算法?的主要内容,如果未能解决你的问题,请参考以下文章

源码解读asp.net core源码启动流程精细解读

我net开发有十几年了,请问是继续跟着微软走转向net core、还是转java、还是转前端,或者其他方向?

特斯拉为何使用.NET Core技术框架?

积极参与开源项目,促进.NET Core生态社区发展

MVP架构。。。。

读.Net Core开源项目源码:Owin Katana 的底层源码分析