减少GC开销的5个编码技巧】的更多相关文章

在这篇文章中,我们来了解一下让代码变得高效的五种技巧,这些技巧可以使我们的垃圾收集器(GC)在分配内存以及释放内存上面,占用更少的CPU时间,减少GC的开销.当内存被回收的时候,GC处理很长时间经常会导致我们的代码中断(又叫做”stop the world”). 背景 GC用来处理大量的短期的对象的分配(试想打开一个web页面,一旦页面被加载之后,被分配内存的大部分对象都会被废弃). GC使用一个被称作”新生代”堆空间来完成这件事情.”新生代”是用来存放新建对象的堆内存.每一个对象都有一个”ag…
一:触发主GC(Garbage Collector)的条件 JVM进行次GC的频率很高,但因为这种GC占用时间极短,所以对系统产生的影响不大.更值得关注的是主GC的触发条件,因为它对系统影响很明显.总的来说,有两个条件会触发主GC: 1)当应用程序空闲时,即没有应用线程在运行时,GC会被调用.因为GC在优先级最低的线程中进行,所以当应用忙时,GC线程就不会被调用,但以下条件除外. 2)Java堆内存不足时,GC会被调用.当应用线程在运行,并在运行过程中创建新对象,若这时内存空间不足,JVM就会强…
程序的运行会直接影响系统环境的变化,从而影响GC的触发.若不针对GC的特点进行设计和编码,就会出现内存驻留等一系列负面影响.为了避免这些影响,基本的原则就是尽可能地减少垃圾和减少GC过程中的开销.具体措施包括以下几个方面: (1)不要显式调用System.gc() 此函数建议JVM进行主GC,虽然只是建议而非一定,但很多情况下它会触发主GC,从而增加主GC的频率,也即增加了间歇性停顿的次数. (2)尽量减少临时对象的使用 临时对象在跳出函数调用后,会成为垃圾,少用临时变量就相当于减少了垃圾的产生…
出处:  Java编码技巧之高效代码50例 1.常量&变量 1.1.直接赋值常量值,禁止声明新对象 直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常量值. 反例: Long i = new Long(1L);String s = new String("abc"); 正例: Long i = 1L;String s = "abc"; 1.2.当成员变量值无需改变时,尽量定义为静态常量 在类的每个对象实例中,每个成员变量都有一份副本,而成员静态常量…
前面的话 本文将从DRY.currentColor.inherit和合理使用简写这几方面来详细介绍CSS编码技巧 DRY DRY,即don`t repeat yourself,尽量减少代码重复 在软件开发中,保持代码的DRY和可维护性是最大的挑战之一,而这句话对CSS也是适用的.在实践中,代码可维护性的最大要素是尽量减少改动时要编辑的地方 灵活的CSS通常更容易扩展.在写出基础样式之后,只用极少的代码就可以扩展出不同的变体,因为仅需覆盖一些变量就可以了 下面这段代码在可维护性方面存在一些问题 <…
CSS编码技巧 我的github地址:https://github.com/FannieGirl/ifannie 喜欢的给我一个星吧 尽量减少代码重复 尽量减少改动时需要编辑的地方 当某些值相互依赖时,应该把它们的相互关系用代码表示出来 代码易维护 VS 代码量少 currentColor -- CSS有史以来第一个变量 inherit可以用在任何CSS属性中,而且它总是绑定到父元素的计算值 关于响应式网页设计 每个媒体查询都会增加成本 媒体查询的端点不应该由具体设备来决定 建议: 使用百分比长…
一.JVM的分区:   1.程序计数器(私有) 程序计数器是一块较小的内存分区,你可以把它看做当前线程所执行的字节码的指示器. 在虚拟机的概念模型里,字节码解释器工作时,就是通过改变计数器的值来选择下一条需要执行的字节码指令. 程序技术器为线程私有,每个线程都有它们各自的程序计数器,这样再多线程的情况下,线程之间的来回切换,也能正确找到上次切换时执行的位置. 如果线程正在执行的是一个Java方法,那么程序计数器记录的是当前线程正在执行的字节码指令的地址:如果线程正在执行的是一个native方法,…
本文参考整理自https://mp.weixin.qq.com/s/-u6ytFRp-ZAqdLBsMmuDMw 对于在本文中有所疑问的点可以去该文章查看详情 常量&变量 直接赋值常量值, 禁止声明新对象,如Long i = new Long(1L); 当成员变量值无需改变时, 尽量定义为静态常量 尽量使用基本数据类型, 避免自动装箱和拆箱 如果变量会被覆盖就没必要赋初值 尽量使用函数内的基本类型临时变量 函数内, 基本类型的参数和临时变量都保存在栈中, 访问速度较快. 对象类型的参数和临时变量…
一 尽量减少代码重复 1.按钮 #btn { padding: .3em .8em; border: 1px solid #446d88; background: #58a linear-gradient(hsla(0,0%,100%,.2),transparent); border-radius: .2em; box-shadow: 0 .05em .25em gray; color: white; text-shadow: 0 -.05em .05em #335166; font-size:…
原则 正确实现功能 执行速度与快 占系统资源少 后期维护方便 编程注意 1.命名很重要 2.适当的使用注释 3.使用一个变量,需要初始化 4.优先使用单引号 $row['id']的效率是$row[id]的7倍 5.用"1==$a" 替换 "$a==1" 6.防御式编程思想 7.保护程序免遭非法输入数据的危害 8.错误处理技术 9.异常处理 10.隔离程序,使之相互影响小 11因地制宜的防御,过度防御会增加复杂度 明确包含文件的路径 给予恰当的默认值 自定义错误报警的…