文档章节

java程序的内存优化

EveryDayNew
 EveryDayNew
发布于 2015/08/26 18:40
字数 392
阅读 241
收藏 15

面试常被问java的垃圾回收机制,感觉平时写代码很少用到,但是注重程序的内存优化确实很重要。《EffectiveJava》这本书有几条讲的挺好,拿过来总结下吧。

首先简单的概括下java的内存回收机制。

java内存主要是堆内存和栈内存,栈中的内存会在程序运行到所在作用域之外后进行回收。堆中的内存会在没有引用指向的时候,JVM虚拟机在某个时间段根据特定的算法进行回收。

平时写程序注意如下几点,对程序进行内存优化

1、避免创建不必要的对象

    a、使用基本类型替代装箱类型(享元模式)

    b、StringBuffer替代String

    c、使用单例模式(不推荐延迟加载)

    d、如果一个频繁调用的方法,每次调用都需要实力化对象,考虑静态初始化。如Clendar的实例化

注:小对象的创建和回收都是非常廉价的,通过创建附加的对象提升程序的清晰性,简洁性,功能性是值得推荐的。不推荐使用自己维护的对象池。

2、消除过期对象的引用

   a、对于类似数组,Collection中的对象容器,取出使用之后,可以置空。

   b、使用WeakHashMap做缓存。

3、将局部变量的作用域最小化

   a、在第一次使用局部变量的时候声明该变量







© 著作权归作者所有

共有 人打赏支持
EveryDayNew
粉丝 5
博文 45
码字总数 31409
作品 0
杭州
程序员
私信 提问
JVM性能优化, Part 1 ―― JVM简介

众所周知,Java应用程序是运行在JVM上的,但是你对JVM有所了解么?作为这个系列文章的第一篇,本文将对经典Java虚拟机的运行机制做简单介绍,内容包括“一次编写,到处运行”的利弊、垃圾回收...

梁杰_Jack
2014/10/30
0
0
Hotspot 性能架构 -转

第一章:介绍和概述 Java HotSpot虚拟机是Sun公司的Java平台一个高效的虚拟机实现。Java HotSpot技术提供Java标准平台的基础设施,提供对快速开发、部署关键业务的桌面和企业应用程序的解决方...

刘小兵2014
2011/10/18
0
0
加强Docker容器与Java 10集成

很多运行在Java虚拟机(JVM)中的应用,包括数据服务如Apache Spark和Kafka以及传统企业应用,都运行在容器中。最近,运行在容器里的JVM出现了由于内存和CPU资源限制和使用率导致性能损失问题...

java高级架构牛人
06/04
0
0
JVM性能优化, Part 5:Java的伸缩性

ImportNew注: JVM性能优化系列文章前4篇由ImportNew翻译(第一篇,第二篇,第三篇, 第四篇)。本文由新浪微博:吴杰 (@WildJay) 投稿至ImportNew。感谢吴杰! 如果你希望分享好的原创文章或...

梁杰_Jack
2014/10/30
0
0
android -------- java虚拟机和Dalvik虚拟机

java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚...

切切歆语
04/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

防御CSRF攻击

跨站请求伪造(CSRF)是一种安全漏洞,攻击者利用受害者的 session 来通过受害者的浏览器发出请求。攻击者通过受害者的浏览器发送请求,并伪造成是受害者自己发出的请求。 建议你先熟悉CSRF,...

Landas
15分钟前
0
0
【双12首发】终于等来了!PhalApi-iView-admin 开源后台框架

PhalApi-iView-admin 开源后台框架 码云地址:https://gitee.com/dogstar/phalapi-iview-admin Github地址:https://github.com/phalapi/phalapi-iview-admin 主要采用的技术: PhalApi 开源......

暗夜在火星
15分钟前
0
0
JavaScript面试题大坑之隐式类型转换实例代码

1.1-隐式转换介绍 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算 这种无需程序员手...

peakedness丶
17分钟前
0
0
示例vue 的keep-alive缓存功能的实现

本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 #Vue 实现组件信息的缓存 当...

前端攻城老湿
19分钟前
0
0
解析Vue.js中的computed工作原理

我们通过实现一个简单版的和Vue中computed具有相同功能的函数来了解computed是如何工作的。写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批...

前端攻城小牛
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部