现在 Java 界推崇“use Jar, not War”,但是这 Jar 的内存占用也太。。。。。。

2018-12-06 11:33:50 +08:00
 abcbuzhiming
以前我们部署 Java 的 Web 应用,都是搞个 Tomcat 或者 Jetty 这样的 Servlet 容器服务器装到到目标机器,然后每个应用 App 在 Servlet 容器服务器占据一个上下文路径来提供自己的服务。这样的服务器启动时占的内存不大,也就 1GB 左右,但是内部的应用会互相干扰抢占资源占用,有的时候一个应用出现了无法卸载的死机,你会不得不把整个 Servlet 容器服务器停下来。最近的 Java 界,大家都推崇直接用 Jar 包跑,反正 jar 包里有内嵌的 Servlet 容器服务器。好处就是各个 Jar 之间可以互不干扰了,但是这启动内存占用真是吓人,1 个启动的时候都接近 1G 了,一台服务器上启动几个 Jar,内存就要没了。我想了想,这应该还是 Servlet 容器服务器的锅,内嵌的容器服务器那也是服务器啊。所以我想问问各位:
1.你们这么看待和解决这个问题?
2.业界最近有干脆去掉 Servlet,用别的方式提供 Web 服务的声音,而且确实出现了这样的框架,有人实践过吗,有好处吗?资源占用情况如何
10208 次点击
所在节点    Java
44 条回复
jlkm2010
2018-12-07 10:29:18 +08:00
25 楼正解
genjigjj
2018-12-07 13:53:24 +08:00
docker 了解下
bk201
2018-12-07 16:08:52 +08:00
你容器配置中有没限制 jvm 内存占用?而 jar 运行时候限制内存占用了吗?内嵌跑容器,外置也一样跑容器,有什么区别?
someonedeng
2018-12-17 01:51:00 +08:00
1.JVM 参数限制一下堆大小
2.vert.x

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/514879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX