码迷,mamicode.com
首页 > 编程语言 > 详细

Java面向对象学习笔记 -- 7(GC)

时间:2015-05-27 19:25:03      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:gc   垃圾回收   


1. 垃圾回收机制(GC)

    1)Java内存分配
    在JAVA程序中,无论代码还是数据,都需要存储在内存中,而java程序所需内存均由JVM进行管理分配,JVM会将申请的内存从逻辑上划分为三个区域:堆、栈、方法区。这三个区域分别用于存储不同的数据。

    堆用来存放创建出来的对象,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身,每个对象都包含一个与之对应的class的信息(class的目的是得到操作指令);

    栈中只保存基本数据类型和对堆空间的对象的引用变量,每个栈中的数据(基本类型和对象引用变量)都是私有的,其他栈不能访问,栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 

    方法区用于存放类的信息,Java程序运行时,首先会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区。类的各种信息(包括方法)都在方法区存储,方法只用一份。

    2)垃圾回收

    垃圾回收器(Garbage Collection,GC)是JVM自带的一个线程(自动运行着的程序),用于回收没有任何引用所指向的对象。

    GC线程会从栈中的引用变量开始跟踪,从而判定哪些内存是正在使用的,若GC无法跟踪到某一块堆内存,那么GC就认为这块内存不再使用了,即为可回收的。但是,java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。

    GC的回收对程序员来说是透明的,并不一定一发现有无引用的对象就立即回收。一般情况下,当我们需要GC线程即刻回收无用对象时,可以调用System.gc()方法。此方法用于建议JVM马上调度GC线程回收资源,但不保证立即回收。


本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1655668

Java面向对象学习笔记 -- 7(GC)

标签:gc   垃圾回收   

原文地址:http://kingkongzhao.blog.51cto.com/6319491/1655668

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!