有多少 java 码农平时需要用到 jvm 调优和数据库调优?

2016-12-25 23:04:59 +08:00
 esolve

会不会工作一两年了 还没用到过 jvm 调优 而是由 DevOpt 或者部署工程师去做?

6969 次点击
所在节点    Java
34 条回复
neoblackcap
2016-12-26 13:11:50 +08:00
@q397064399 其实 GC 的实现还是相当公开的, openjdk 里面各种各样的 GC 都有算法论文,以及代码都是公开的,想怎么调就怎么调。
还有一个就是 stop the world 其实也是可以避免的, http://www.azulsystems.com/sites/default/files/images/c4_paper_acm.pdf 这篇论文就有说 azul 是如何实现一个 GC ,并将卡顿控制在 10ms 之内,也有金融公司用了他们 JVM 。
q397064399
2016-12-26 13:42:29 +08:00
@neoblackcap 我不是很清楚,我读过一个章节,
深入理解 JVM 虚拟机 确实有一个章节 有讲过 能够避免 stop the world 的虚拟机

但是 GC 算法是如何实现我的就不清楚了?
GCROOTS 难道是 dfs 搜索 有向图?从堆栈模型来讲,所有的对象确实是形成了一个 有向闭环图
eightqueen
2016-12-26 15:04:38 +08:00
java 还是太弱,需要优化内存,你看 php 就不用。
kylefeng
2016-12-26 15:13:46 +08:00
业务量不够,大部分情况下用不到。。。
cjyang1128
2016-12-26 15:33:35 +08:00
jvm 调优,看要怎么细致地调优了,太细致的话,人力成本就上去了,所以一般就调个堆栈内存和 gc 的一些参数,通过加机器能够解决的还是通过加机器解决好了。数据库调优,如果是 sql 层的调优,很简单,收益大,值得一做,数据库配置上的,没做过,不懂
oa414
2016-12-26 15:42:29 +08:00
换工作面试的时候...

开发的时候,做应用层很少碰到数据库“调优”,更多时候只是按照正确的方法去做或者去改,比如把查询写对而不是一堆 N + 1 Query ,加正确合适的索引,把一些复杂统计操作从应用层迁移到数据库层实现。
joyee
2016-12-27 00:27:12 +08:00
@q397064399 这年头有认(na)真(qian)做的 GC 基本都有避免 stop-the-world 的方法,有的能做到 incremental (把暂停分割成一点点一点点),有的能做到 concurrent (几乎不需要暂停),没有 bug 的状况下这些 GC 暂停时间肯定不是随着堆大小 O(n) 的,做得好基本都控制在几十或者几 ms 内……当然这个是有代价的,一般相比起完全的 stop-the-world 回收都会有一定的滞后,换句话说就是牺牲了 GC 的吞吐量( thoroughput )来换取低延时( latency )……

另外这些 GC 大部分就算不开源起码也会发发论文的……不至于黑盒子……
buliugu
2016-12-27 00:43:05 +08:00
@joyee azul 家的 Zing JVM ,在 TB 级内存上超低延迟, GC 用的是黑科技版的 C4 , 21L 的链接就是论文
joyee
2016-12-27 00:55:07 +08:00
@q397064399 至于怎么避免 stop-the-world ,最流行的就是各种 barrier + safepoint 检查来为 incremental / concurrent GC 提供保障了……有的是 read barrier 有的是 write barrier 有的都用(楼上的 azul 论文就都用),只要能想办法保证回收的时候不碰活的内存就行……
joyee
2016-12-27 01:05:59 +08:00
@buliugu 嗯但是他们家的 GC 要达到最好的效果需要用他们家的 CPU ……( read barrier 需要硬件支持才能做的好)
skywayman
2016-12-27 12:10:21 +08:00
jvm 调优少,内存调整首当其冲...
数据库调优是时时刻刻,因为一句 SQL 就能把数据库搞完蛋...
buliugu
2016-12-28 18:47:06 +08:00
@joyee 是啊,但是 azul 家的客户很多都是墙街大佬,那只是小钱
Gimlyu
2016-12-29 17:50:59 +08:00
作为一个 Javaer ,都应该懂得这些,基本技能。 另外,谁来做这个事情,显得不重要了,重要的是有人做。做了的要比不做的收获多。。。这是个 “ You can you up ” 的时代。
clearbug
2016-12-31 16:47:23 +08:00
看了几章《深入理解 Java 虚拟机》,然后是一头雾水。。感觉根本就不是我这种还未入门的小白该看的

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

https://www.v2ex.com/t/330096

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

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

© 2021 V2EX