GC(Java的垃圾回收机制)
2017-08-29 12:54
281 查看
C/C++的垃圾回收需要程序员分配内存来处理,回收本身占用内存,容易引起:1、内存泄漏:处理垃圾的内存占用大量内存2、清理时如果核心类被处理,引起程序崩溃。
Java的GC。对象分配在堆内存中,当对象没有被引用原分配的某个对象内存,JVM的一个超级线程会处理这个“垃圾信息”,丢弃。并且回收内存空间,分配给其他对象。【内存碎片会随着对象创建和清除而出现,GC也会处理这个碎片,碎片是对象的内存块间的空闲区,JVM会将已被占用的堆内存集中到堆得一端,腾出空间给新的对象分配内存】。
优点:自动处理程序的碎片,分配内存空间,提高编程效率,因为不用花时间解决存储器问题。
缺点:一直在运行的GC开销程序性能,JVM花销一定性能跟踪对象是否有用。其次回收算法的不完善,不能保证百分百集中所有废弃内存。
GC:只能处理堆内存的空间,其它物理资源【数据库连接、磁盘I/O】不能处理;null会暗示GC可以回收该对象;GC算法不可预知性【定时;CPU空闲;内存耗光······】system.gc和finalize两个方法可以手动进行垃圾回收。
编成注意:不需要对象就不要建,否则会占用内存,做无谓的开销。降低性能。
堆:存放且只存放所有对象【每个对象都包含一个与之对应的class的信息】,不放对象的引用和基本类型,JVM只有一个堆区(heap)被所有线程共享
栈:每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用;每个栈基本类型和引用是私有,不能能被其他栈访问;栈有3个部分:基本类型变量区、执行环境上下文、操作指令区
方法区:又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量;方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
Java的GC。对象分配在堆内存中,当对象没有被引用原分配的某个对象内存,JVM的一个超级线程会处理这个“垃圾信息”,丢弃。并且回收内存空间,分配给其他对象。【内存碎片会随着对象创建和清除而出现,GC也会处理这个碎片,碎片是对象的内存块间的空闲区,JVM会将已被占用的堆内存集中到堆得一端,腾出空间给新的对象分配内存】。
优点:自动处理程序的碎片,分配内存空间,提高编程效率,因为不用花时间解决存储器问题。
缺点:一直在运行的GC开销程序性能,JVM花销一定性能跟踪对象是否有用。其次回收算法的不完善,不能保证百分百集中所有废弃内存。
GC:只能处理堆内存的空间,其它物理资源【数据库连接、磁盘I/O】不能处理;null会暗示GC可以回收该对象;GC算法不可预知性【定时;CPU空闲;内存耗光······】system.gc和finalize两个方法可以手动进行垃圾回收。
编成注意:不需要对象就不要建,否则会占用内存,做无谓的开销。降低性能。
堆:存放且只存放所有对象【每个对象都包含一个与之对应的class的信息】,不放对象的引用和基本类型,JVM只有一个堆区(heap)被所有线程共享
栈:每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用;每个栈基本类型和引用是私有,不能能被其他栈访问;栈有3个部分:基本类型变量区、执行环境上下文、操作指令区
方法区:又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量;方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
相关文章推荐
- Android内存优化5 了解java GC 垃圾回收机制3
- 成为JavaGC专家Part I — 深入浅出Java垃圾回收机制
- 转 Java虚拟机5:Java垃圾回收(GC)机制详解
- Java垃圾回收机制_你不知道的GC_转深度好文
- 成为JavaGC专家Part II — 如何监控Java垃圾回收机制
- Java垃圾回收机制(GC)
- java 垃圾回收机制(GC)学习笔记
- 怎么在面试时回答Java垃圾回收机制(GC)相关问题?
- 成为Java GC专家(1):深入浅出Java垃圾回收机制
- gc, Java 垃圾回收机制
- 20170702 Java垃圾回收机制(GarbageCollection,GC)
- Java的垃圾回收机制GC
- 成为Java GC专家系列(3) — 如何优化Java垃圾回收机制
- Java GC - 垃圾回收机制
- Java垃圾回收机制(GC)详解
- Java的JVM GC(Garbage Collection)垃圾回收原理机制及算法
- Java性能优化之JVM GC(垃圾回收机制)
- 成为JavaGC专家Part II — 如何监控Java垃圾回收机制
- 成为JavaGC专家(2)—如何监控Java垃圾回收机制
- 成为Java GC专家系列(3) — 如何优化Java垃圾回收机制