当前位置: 首页 > news >正文

java内存模型优化建议

八、Java编程建议

根据GC的工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求。一些关于程序设计的几点建议:

1)最基本的建议就是尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为 null.我们在使用这种方式时候,必须特别注意一些复杂的对象图,例如数组,队列,树,图等,这些对象之间有相互引用关系较为复杂。对于这类对象,GC 回收它们一般效率较低。如果程序允许,尽早将不用的引用对象赋为null,这样可以加速GC的工作。

2)尽量少用finalize函数。finalize函数是Java提供给程序员一个释放对象或资源的机会。但是,它会加大GC的工作量,因此尽量少采用finalize方式回收资源。

3)如果需要使用经常使用的图片,可以使用soft应用类型。它可以尽可能将图片保存在内存中,供程序调用,而不引起OutOfMemory.

4)注意集合数据类型,包括数组,树,图,链表等数据结构,这些数据结构对GC来说,回收更为复杂。另外,注意一些全局的变量,以及一些静态变量。这些变量往往容易引起悬挂对象(dangling reference),造成内存浪费。

5)当程序有一定的等待时间,程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。使用增量式GC可以缩短Java程序的暂停时间。

相关文章:

  • node.js学习笔记--day1
  • Java 简单算法--排序
  • mysql视图学习总结
  • Ionic2构建iOS应用上传总结
  • vim 命令的一些用法
  • JS闭包
  • 【服务器环境搭建-Centos】jdk的安装
  • Linux 性能基准测试
  • 那些年我们学Flask-SQLAlchemy,实现数据库操作,分页等功能
  • Java设计模式—建造者模式
  • 集群基础之LVS的基础概念
  • mqtt
  • 不做竞价,我们还能做哪些平台?
  • ThinkSNS开源社交系统安装问题及解决措施
  • mysql主从复制的配置总结
  • python3.6+scrapy+mysql 爬虫实战
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • chrome扩展demo1-小时钟
  • Date型的使用
  • echarts花样作死的坑
  • java2019面试题北京
  • javascript 总结(常用工具类的封装)
  • miaov-React 最佳入门
  • Phpstorm怎样批量删除空行?
  • PV统计优化设计
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vagrant 添加本地 box 安装 laravel homestead
  • vue--为什么data属性必须是一个函数
  • 程序员该如何有效的找工作?
  • 分享一份非常强势的Android面试题
  • 机器学习 vs. 深度学习
  • 将回调地狱按在地上摩擦的Promise
  • 聊聊flink的TableFactory
  • 免费小说阅读小程序
  • 前端知识点整理(待续)
  • 实现菜单下拉伸展折叠效果demo
  • 说说动画卡顿的解决方案
  • 思考 CSS 架构
  • 微信公众号开发小记——5.python微信红包
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​人工智能书单(数学基础篇)
  • ​虚拟化系列介绍(十)
  • # include “ “ 和 # include < >两者的区别
  • #### go map 底层结构 ####
  • #pragam once 和 #ifndef 预编译头
  • #pragma data_seg 共享数据区(转)
  • (4) PIVOT 和 UPIVOT 的使用
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (多级缓存)多级缓存
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot建达集团公司平台 毕业设计 141538