当前位置:首页 > 技术分析 > 正文内容

对比 java,go,c# 生成的本地可执行程序

ruisui883个月前 (02-11)技术分析15

现在java,go和csharp都可以编译成多个平台的本地可执行程序了,我们今天就来对比测试下他们生成本地程序后对系统资源的占用差别。



java的我用quarkus框架来做个测试,虽然springboot也有,但还处于实验中还不能处于实际运用中。

我使用官方最简单的样例:





可以看到生成的程序大小约为40m,内存占用约为21m,和在内存方面和通常使用的jvm运行比来是要小了很多很多。



csharp我用net6的asp.net core来做测试。




内存占用和java的差不多,由于java的静态资源是打在包中的,而csharp是裸露在外的,这个wwwroot约7mb,加上主程序也就和java的差不多了。



go的测试我用的是iris框架,gin也很不错,只是没法把静态目录映射到根地址这让我很纠结,只好选择了iris。




go生成的包就特别的小,只有16m,内存占用也只有18.9m。


从本次测试结果看,go的优势还是最大的。net虽然也很接近,但是生成linux的可执行程序放到docker中用乌班图或者centos去跑的话会报错误,缺少某个依赖,但是放到宿主机的linux中跑就没有问题,似乎精简后的镜像把net需要的东西也给精简掉了,所以还是有兼容性问题。java虽然也达到了效果了,但是由于java不支持交叉编译并且不是所有的api都支持本地化编译,所以目前只能极小项目上使用。


欢迎三连哦!


#java#

#csharp#

#golang#

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1877.html

标签: centos java
分享给朋友:

“对比 java,go,c# 生成的本地可执行程序” 的相关文章

vue中组件之间的通信方式

** 1.1 父子组件**a. 父向子传数据: 第1种: 父通过属性传值,子组件通过props接收数据(注:props传过来的数据是单向的,不可以进行修改)第2种:子组件可以通过$parent来获取父组件里的数据和调用父组件的方法(注:数据是双向的,还要注意如用了UI组件并且在该UI组件里重新定义一...

gitlab 分支保护设置

一、功能描述代码管理中管理,我们把稳定的分支设置为保护,可以防止其他人员误操作(例如删除,合并,推送代码等)。二、Gitlab配置步骤1 点击项目Repository标签2.点击Expand标签3.配置如下:默认master是被保护的,而且只有维护人员具有推送和合并权限。设置保护分支,这里的beta...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...

你感动了吗?佳能超规格镜头 RF 24-105mm F2.8深度测评

如果要你选一支用作多题材创作的挂机镜头,那我相信很多人会选择24-105mm这个焦段的镜头。作为一支可以实现从广角到长焦的变焦镜头,24-105mm有着丰富的焦段选择。只是基于镜头体积以及光学结构上的限制,此前的24-105mm镜头只能恒定在F4的光圈。而佳能打破了这一限制,将实用焦段和恒定光圈完美...

vue3使用vue-router路由(路由懒加载、路由传参)

vue-router 是 vue的一个插件库1. 专门用来实现一个SPA单页面应用2 .基于vue的项目基本都会用到此库SPA的理解1) 单页Web应用(single page web application,SPA)2) 整个应用只有一个完整的页面3) 点击页面中的链接不会刷新页面, 本身也不会向...

Vue页面传参详解

一、两种方式方法1:name跳转页面this.$router.push({name:'anotherPage',params:{id:1}})另一页面接收参数方式:this.$route.params.id示例:控制台展示:方法2:path跳转页面this.$router.push(...