V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  MapHacker  ›  全部回复第 5 页 / 共 7 页
回复总数  132
1  2  3  4  5  6  7  
2020-12-15 15:50:55 +08:00
回复了 enihcam 创建的主题 Java 为什么 Java 要码农操心 JVM 性能调优?
把大佬的回答直接粘过来吧

作者:RednaxelaFX
链接: https://www.zhihu.com/question/52900051/answer/132583244
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

假定题主说的是下面三个层面的调优的头两种情况:
1.对 VM 的配置参数调优(例如 GC 参数)
2.对应用程序自身的代码调优
3.对 VM 自身的实现调优

(2)的话无论什么语言什么环境都好,追求性能的人肯定都有在做。Java 和.NET 都有好用的 profiler 可以帮助这方面的调查和调优。有时候参数调优还不够的地方,也只能自己改自己的应用代码来解决问题了。请看一个经典案例: https://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector

(3)的话,CLR 还没开源的时候,也无从调起。倒是有不少人给 Mono 贡献改进性能的 patch,也算是广义上“.NET”的 VM 实现层面调优吧。在 CoreCLR 开源后,也有不少人给 CoreCLR 贡献各种 patch 呢,包括“调优”。.NET 码农们以前时不时会中招的一种地方是程序进入 GC 的耗时( time-to-GC ),也就是从 CLR 说“我要开始做 GC 了”到“真正开始做 GC”之间的耗时。这里主要开销来自请求所有应用线程暂停( SuspendEE ),这些线程要多久才完成对该请求的响应。听说过这个过程中会发生“250ms 的倍数的等待时间”不?请跳传送门: http://blogs.microsoft.co.il/sasha/2009/07/31/garbage-collection-thread-suspension-delay-250ms-multiples/ 像这种问题就是不进到 VM 内部做修改的话无法解决的。

(1)的话,其实就算当年 CLR 还没开源的时候,CLR 也是有调优参数可以配置的呢。最经典的就是选择试用 Workstation GC ( WKS GC )或者 Server GC ( SVR GC )。见过<gcServer>参数不?后来可以配置使用 Concurrent GC 、Background Workstation GC 、Background Server GC 等。用户还可以在代码里通过 GCSettings.LatencyMode 属性来影响 GC 的行为。看,调优参数列表之一: https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/?redirectedfrom=MSDN

不过 CLR 跟 HotSpot VM 在配置上有一个显著的区别,就是 CLR 不需要用户指定一个“GC 堆的最大大小”。这跟 CLR 的 GC 堆的基础设计思路有关系。HotSpot VM 的 GC 堆一定要使用连续的虚拟地址空间。VM 在启动的时候会一口气 reserve GC 所需要的整个地址空间,然后再按需 commit 。-Xmx 会参与到 GC 堆最大大小的计算中。CLR 的 GC 堆则是分段式的( segemented ),GC 堆所用的空间会一个个 segment 分配,用满了一个再去分配一个新的; segment 不需要在连续的地址空间上。这样 GC 堆可以按需自动增长或者缩减,可以一直增长到耗尽虚拟地址空间或者达到配额。CLR 这种分段式 GC 堆的好处是,在 Windows 上,特别是 32 位 Windows 上,虚拟地址空间中用户程序可以用的部分是比较零碎的,想要用到尽就不能对“连续的地址空间”有太多要求,这种条件下 CLR 跑在 Windows 上就可以充分利用资源。而且这样一来,用户就不用头疼实现想好要配置多大的堆给 CLR 用了。反正它需要用多少会自己去增长。这用户体验就比绞尽脑汁想个好-Xmx 要爽。这种做法的坏处…怎能没有坏处呢。坏处也有若干。其中一个就是在这样的堆上实现的分代式 GC 的 write barrier 效率会比 HotSpot 那种用连续地址空间的要差一些。而且 segmented heap 实现起来也稍微复杂一些。
帮顶~
2020-03-15 14:14:24 +08:00
回复了 1oNflow 创建的主题 职场话题 面试官说话时怎么礼貌地附和?
嗯哼?欧开?
航空总医院的口腔,去过几次还蛮不错的,虽然不是三甲。
2019-12-13 20:37:39 +08:00
回复了 liunaijie 创建的主题 程序员 不懂就问,红黑树的插入过程
《算法》中关于红黑树部分的内容我之前也看的很困惑,因为旋转的逻辑和别的地方看到的不太一样,比如 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 这个可视化算法的网站,后来干脆放弃《算法》,转向别的资料了。
根据目前 appstore 里常见应用适配 ipad 的情况反推,不是。
cpu 跑分或者拷机呗,纯运算应该不涉及 ssd
11 香上加香,哈哈。
我也用的 typec 显示器,没接电源线,有一天突然死活充不进电了,拿去天才吧重置了一下 SMC 又好了。。
2019-09-02 11:49:15 +08:00
回复了 zhiwoda123 创建的主题 硬件 四万块买一个外星人游戏本值不值
面向需求购物,想玩 gta5 就找找流畅高特效 gta5 的本子大概的配置,然后综合一下看看你有没有其他方面的需求,便携啊做工啊售后什么的。
如果单纯为了 gta5 就要买四万的外星人肯定不值呀。。
我来拉低一下水平。。没拒过 offer,给 offer 的我都去了。。
2019-07-11 19:42:46 +08:00
回复了 89ao 创建的主题 macOS [恕我直言] macos 的深色模式,真的违和
jetbrains 家的 darkmode 我是比较喜欢的,不是粗暴的背景变黑,而是不同区域用不同深度的灰色,看着还不错,纯黑色的背景看多了真的感觉要瞎。。。
2019-07-04 11:27:33 +08:00
回复了 xytyzgf 创建的主题 macOS 手贱升级了 macOS Catalina 后,发现 IDEA 崩了!
工作机吗。。升级大版本还是要慎重呀兄弟。。。
没接地,确实是会漏电。
2019-07-02 17:45:48 +08:00
回复了 unknowncheater 创建的主题 程序员 专注做事时不回复任何外部请求是情商低吗?
挺羡慕的,这种属于不管周围多吵都能专注自己世界的人,很难得的品质。
2019-06-26 16:38:07 +08:00
回复了 jxf2008 创建的主题 Android APP 切换语言问题
应该搜 Android 应用内多语言
通过 resources.updateConfiguration 可以改变应用内的语言,剩下的逻辑慢慢边查边完善就好了。
2019-05-31 11:10:38 +08:00
回复了 wsseo 创建的主题 MacBook Pro 我觉得 macbook 有必要再出一个更注重性能的分支
小道消息传说明年会出 16 寸的系列,不知道是不是类似的定位。
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2846 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 14:30 · PVG 22:30 · LAX 06:30 · JFK 09:30
♥ Do have faith in what you're doing.