JAVA垃圾回收机
来源:互联网 发布:我的淘宝怎么下载安装 编辑:程序博客网 时间:2024/04/30 16:01
垃圾回收基本算法
- 串型回收和并行回收
串行回收始终在一个CPU上执行回收操作。并行回收则将回收任务分为好几步,每步使用不同的CPU执行,这样加快了执行速度,有点像流水线作业。
- 并发执行和暂停应用程序
并发执行意味着垃圾回收线程可以和用户线程同时工作,但是系统开销比较大。暂停应用程序则在垃圾回收器运行时停止用户线程的执行。
- 压缩、不压缩和复制
压缩则会把活动对象放在一起,并回收剩余的内存。不压缩则只是回收不用的内存,对活动对象不做额外的操作。复制则把堆内存分为两部分A和B,A为空闲状态。将B中的活动对象放入A中,回收B内存。
java堆内存回收
java将对象分为3代,对每代执行不同的回收策略
Young代
线程执行初期的对象都处于Young代,并且大部分对象会很快进入不可达状态,使用的回收算法是复制。Young代由1个Eden和2个Survivor组成。绝大部分对象一开始处于Eden区域,等垃圾回收器启动时,会将可达对象放入其中的一个Survivor中。等到垃圾回收器再次启动时会将Eden(新产生的)和Survivor中可达对象放入另一个空闲的Survivor中。不断的进行轮替操作。
Old代
如果Young中的对象长时间处于可达状态的话会进入Old代。由于Old代对象存活时间很长并随着新的对象被加入Old代中,会使得Old中的对象越来越多。这使得对Old代对像的回收频率不用太高,并且需要更长的回收时间,所以采用压缩算法来处理。
Permanent代
Permanent代主要装载Class、方法等信息,默认是64M,垃圾回收机制通常不会回收Permanent对象。
JAVA内存回收选项
-Xmx256m 设置虚拟机最大堆内存256MB
-Xms128m 设置堆内存初始容量为128MB
-XX:MaxNewSize=128m 设置Young代内存最大容量128MB
-XX:MaxPerSize = 64m 设置Permanent代最大容量为64MB
JAVA内存使用小技巧
使用基本类型时最好不用其包装类
如String str = “avd”; 不要使用String str = new String(“avd”);
进行字符串连接操作
尽量使用StringBuilder和StringBuffer对象,这两个对象是变长的。而String对象不是变长的,进行字符串连接是会产生大量的临时变量。
尽早释放无用对象的引用
尽量少用静态变量
缓存经常使用的对象(HashMap 或开源项目等)
0 0
- JAVA垃圾回收机
- Java垃圾回收制机算法
- Java垃圾回收
- java垃圾回收算法
- JAVA垃圾回收问题
- Java 垃圾回收
- JAVA垃圾回收
- Java中的垃圾回收
- Java垃圾回收器
- java垃圾回收机制
- java垃圾回收
- java 垃圾回收 算法
- java垃圾回收
- Java垃圾回收机制
- Java垃圾回收简介
- IBM Java垃圾回收
- java垃圾回收
- java垃圾回收机制
- git学习笔记-3
- extView 添加Onclick 无效
- leetcode30---Substring with Concatenation of All Words
- Android开发官方文档---Sharing Simple Data
- vim使用笔记01——常用模式与操作
- JAVA垃圾回收机
- 字典
- Weka简介
- 提取EMG信号
- UIAlertController
- java中的匿名内部类总结
- freemarker打印word(目录,分页)
- 屏幕适配123
- oracle和MySQL区别