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

createh52周前 (12-16)技术教程10

现在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#

相关文章

Windows脚本用于启停Java应用程序JAR包,并具备日志输出功能

1. 创建批处理脚本创建一个批处理文件(例如 app.bat),并在其中编写启动和停止 JAR 包的命令,并将输出重定向到日志文件。app.bat@echo offsetlocal:: 设置环境变量s...

这样做优化,实现 0.059s 启动一个SpringBoot项目

前言最近自己用Spring Cloud Alibaba做了一个微服务架构的项目,部署的时候遇到了难题:内存不够。目前该项目有7个微服务,因为我只有一台阿里云的服务器(2C 4G),所以我只能把所有的微...

Java 应用程序的 CPU 使用率飙升原因分析

1、背景在服务器上执行某个任务时,系统突然运行缓慢,top 发现cpu飙升,一度接近100%,最终导致服务假死。2、CPU 使用率怎么计算?CPU% = 1 - idleTime / sysTime...

Netty 框架学习——基于 Netty 的 HTTP/HTTPS 应用程序

2|0 通过SSL/TLS保护应用程序SSL 和 TLS 安全协议层叠在其他协议之上,用以实现数据安全。为了支持 SSL/TLS,Java 提供了 javax.net.ssl 包,它的 SSLCont...

Java窗体应用程序人事管理系统web人资招聘员工劳资jsp源码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目描述Java窗体应用程序人事管...