JVM优化之逃逸分析及锁消除 (it.deepinmind.com)

【简介】

逃逸分析——我们在上一篇文章中所介绍的由编译器完成的一项的分析技术——使得删除锁的优化成为了可能。如果它能确认某个加锁的对象不会逃逸出局部作用域,就可以进行锁删除。这意味着这个对象同时只可能被一个线程访问,因此也就没有必要防止其它线程对它进行访问了。这样的话这个锁就是可以删除的。这个便叫做锁消除,本文是JVM实现机制的系列文章,这也正是今天要讲的主题。

众所周知,java.lang.StringBuffer是一个使用同步方法的线程安全的类,它可以用来很好地诠释锁消除。StringBuffer是Java1.0的时候开始引入的,可以用来高效地拼接不可变的字符串对象。它对所有append方法都进行了同步操作,以确保当多个线程同时写入同一个StringBuffer对象的时候也能够保证构造中的字符串可以安全地创建出来。

点击查看全文 >>

@技术头条 2021-06-13 23:06分享 / 原作者微博:@Java译站 / 0个评论
赞过的人: IT技术博客大学习
要不要再学学下面的文章?
细粒度情感分析在到餐场景中的应用 (tech.meituan.com)
经典的细粒度情感分析(ABSA,Aspect-based Sentiment Analysis)主要包含三个子任务,分别为属性抽取、观点抽取以及属性-观点对的情感倾向判定三个级联任务。本文介绍了美团到店到餐应用算法团队通过结合学界最先进的阅读理解、注意力机制等方面的实体抽取、情感分析经验,解决到餐(菜品,属性,观点,情感)四元组抽取问题,并在多个业务场景应用落地,希望能对从事相关工作的同学有所帮助或启发。
by @技术头条 2022-05-06 23:16 分享 查看详情
Systrace 线程 CPU 运行状态分析技巧 - Runnable 篇 (androidperformance.com)
本文是 Systrace 线程 CPU 运行状态分析技巧系列的第一篇,主要分析了 Systrace 中 cpu 的 runnable 状态出现的原因和 Runnable 过长时的一些优化思路。

本系列的目的是通过 Systrace 这个工具,从另外一个角度来看待 Android 系统整体的运行,同时也从另外一个角度来对 Framework 进行学习。也许你看了很多讲 Framework 的文章,但是总是记不住代码,或者不清楚其运行的流程,也许从 Systrace 这个图形化的角度,你可以理解的更深入一些。
by @技术头条 2022-05-06 23:12 分享 查看详情
52条SQL语句性能优化策略,建议收藏! (mp.weixin.qq.com)
本文会提到 52 条 SQL 语句性能优化策略。

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引。

2、应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。
by @code小生 2022-04-10 21:11 分享 查看详情
搜索引擎优化(SEO)之整合重复网址 (forum.lovejade.cn)
网络营销中有两个很大的分类,分别为付费的广告和免费的 SEO,SEO 的好处在于:免费流量,被动访问,源源不断。自 2021 年 9 月,对于所维护的 Web 应用:倾城之链,有购买 Google 广告,最近两月已取得不错的效果。在另 SEO 维度,也该付诸努力,使其也发挥效用。春节期间,因为些缘由,没有回老家,闲余时间,有阅读些 SEO 相关分享;本文旨在将可用于倾城之链的优化手法,记录于此,以观后效。
by @杨琼璞 2022-03-25 23:24 分享 查看详情
V8引入全新的非优化JS编译器,性能大幅提升! (mp.weixin.qq.com)
想要编写高性能的 JavaScript 引擎,光是有高度优化的编译器(如 TurboFan)是不够的。特别是对于短生命周期的会话(例如加载网站或命令行工具),在高优化编译器开始优化之前就已经有很多工作要做,更没有时间去生成什么优化代码了。
by @code小生 2022-03-06 21:46 分享 查看详情
Web前端性能优化思路 (insights.thoughtworks.cn)
基于现代Web前端框架的应用,其原理是通过浏览器向服务器发送网络请求,获取必要的index.html和打包好的JS、CSS等资源,在浏览器内执行JS,动态获取数据并渲染页面,从而将结果呈现给用户。在这个过程中,有两个步骤可能较为耗时,一个是网络资源的加载,另一个是浏览器内代码执行和DOM渲染。
by @Thoughtworks 2022-03-04 17:06 分享 查看详情
性能优化那些事儿(2) (insights.thoughtworks.cn)
性能优化做得再好,系统总会存在极限,因此,兜底的策略也是性能优化的一部分,常见的兜底策略有限流、降级和熔断。
by @Thoughtworks 2022-02-18 16:50 分享 查看详情
C 中访问 Lua 配置表的优化 (blog.codingnow.com)
这两天写代码时用到之前写的一个对 Lua 配置表的 cache 模块 。感觉用起来还是不够简洁方便。我今天动手重新设计了一下。

需求是这样的:

项目有非常多的配置信息保存在 Lua 的 (树状层级的)table 中,大部分逻辑代码直接用 Lua 的语法便可直接访问。但是,有少量有性能要求的业务是在 C 中实现的,C function 中也需要读取这些存放在 Lua 中的配置数据。

配置项随着项目开发,变更非常频繁。如果我设计一个小语言,定义出配置表,用代码生成的方式把表项翻译成对应的 C/C++ 结构,再在 C side 根据 Lua 中的数据重建一组 C 数据也未尝不可。这就是 google protobuf 官方采用的方式(用代码生成的方式,根据数据的 schema 构建出 C++ 类,让 C++ 可以方便访问这些数据)。

但我不想搞得这么复杂(浪费?
by @技术头条 2022-02-04 19:51 分享 查看详情
Android 性能优化的术、道、器 (androidperformance.com)
谷歌搜索 「Android 优化工具」,你会找到很多与此相关的内容。他们的问题在于要么是内容高度重复、要么是直接讲使用方法,很少会给你介绍整体性的架构,一不小心就会让人会种「一个工具搞定一切」的错误认知。以笔者团队的多年经验来看,在性能分析领域这种银弹级别的工具是不存在的。工具在发展,老问题会以新的方式变样出现,不掌握核心逻辑的话始终会让你浮于技术的表面。
本文首先系统性的梳理性能分析中的可观测性技术,它涵盖数据类型、抓取方法以及分析方法等三部分内容,之后是介绍谷歌提供的「三大件」分析工具。目的是想让你了解不变的理论性的知识,以及与之对应的在安卓环境中可用的工具,这些可以让你少走一些弯路,直接复用前辈们的经验。
需要特别说明的是,对于性能优化肯定不止有这三个工具可用,但这个三个工具是我们平时用到的「第一手工具」。进行进一步分析之前,你都需要依赖这三个工具进行瓶颈定位,之后才应不同领域特性选择对应的工具进行下钻分析。
by @技术头条 2022-02-01 22:29 分享 查看详情
性能优化那些事儿(1) (insights.thoughtworks.cn)
我们把性能优化分为两种情况,第一种是在企业发展阶段的平稳期产生的性能瓶颈,第二种是企业发展的临界点产生的性能瓶颈,知道第二曲线原理的同学们可以尝试对应到第二曲线上去,一种是在曲线内的性能优化,一种是跨越曲线的性能优化。
by @Thoughtworks 2021-12-01 14:38 分享 查看详情