曾经我在一位名为“程序羊”B站UP的评论下看到一个说法,“小服务器用Java没个2 G跑都跑不起来。一个JVM就占500MB了”。
意思就是Jvm的开销很大,占用很大。这是事实,但不离谱。我跑过一个就几百行的GUI项目,就要100多MB。其实是能接受的。如下图就是我几百行的软件的占用情况。
Java其实内存占用并没有到离谱的程度,而是因为有些项目实在是太大,所以占用会非常大。我曾经比赛使用过的一个项目,启动就需要占用3G内存,也正是因为我经历过占用3GB内存的开发J2E,所以我有心理阴影。
但这一次,我开发了一个敏捷开发工具麻。一个前后端分离,但后端是“ALL IN ONE”。占用是200~300MB。相对一个企业用户,这点内存不算什么,因为我换来的是文档似的代码,稳定的运行。
现在这个系统已经在我的服务器稳定运行五天了。Java的性能是不需要质疑的,只要开发相对而言,较为规范,就不会出什么大问题。像少用静态类这类的。
后端代码是1.3万行左右,正常一个项目可能会更大,但我这个1.3万行可以算是一个小型的企业应用,其中还有swagger的什么的。服务器的内存是2GB,现在还剩1.3GB,也就是还可以跑四个同等大小的Java服务。
一些人的内存占用很大,可能主要出在不规范的开发,经常用什么static和直接用Map当全局的共享容器,这样不大才怪。也直接说明了,一个不经过实验,未经过调查的评论是不可靠的。
其实我的主要意思还是非技术的,而因为这个人的一句话,让我从2020年学会j2e开发开始,就从没有把jar跑在自己的服务器上过。这其实是个比较伤悲的教训,因为一些偏见,就会导致不经过思索的定论。
后面我将做的是使用Netty和C进行服务器开发,其实主要还是网络编程这方面,想深入学习,然后开发自己的协议。