java的内存管理 对象的分配与释放

news/2024/7/20 15:17:59 标签: java, 内存管理

分配

程序员通过new为每个对象申请内存空间(基本类型除外),所有对象都在堆中分配空间;释放:对象的释放是由垃圾回收机制决定和执行的。

 

Java内存分为两种:栈内存和堆内存

(1)在函数中定义的基本类型变量(即基本类型的局部变量)和对象的引用变量(即对象的变量名)都在栈内存中分配;

(2)堆内存用来存储由new创建的对象和数组以及对象的实例变量(即全局变量)

(3)堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是运行时动态分配内存的;缺点是运行时动态分配内存,存取速度慢;

(4)栈的优点是存取速度较快仅仅次于CPU中的寄存器,且栈数据可以共享;但是栈中的数据大小和生存期是必须确定的,缺乏灵活性;

(5)只有一个堆区被所有线程共享,堆区不存放基本类型和对象引用只存放对象本身

(6)每个线程包含一个栈区,保存基础数据类型的对象和自定义对象的引用,每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问

还有一个方法区:存储所有对象数据共享区域,存储静态变量和普通方法、静态方法、常量、字符串常量等信息,又叫静态区,是所有线程共享的。

 

Java对象销毁

Java中垃圾收集器自动地定期扫描Java对象的动态内存,并将所有的引用对象加上标记,在对象运行结束后(无引用变量对该对象进行关联),清除其标记,并将所有无标记的对象作为垃圾进行回收,释放垃圾对象所占的内存空间。

对象运行结束后或生命周期结束时,将成为垃圾对象,但并不意味着就立即会被回收,仅当垃圾收集器空闲或内存不足时,才会回收他们。

 

Java中每个对象都拥有一个finalize()方法:

java">

垃圾回收器在回收对象时自动调用对象的finalize()方法来释放系统资源。

 

参考:https://www.cnblogs.com/liufangdekele/p/6118979.html

参考:http://www.jb51.net/article/64258.htm

转载于:https://www.cnblogs.com/leifei/p/8258793.html


http://www.niftyadmin.cn/n/1378481.html

相关文章

Codeforces Round #371 (Div. 2) - B

题目链接:http://codeforces.com/contest/714/problem/B 题意:给定一个长度为N的初始序列,然后问是否能找到一个值x,然后使得序列的每个元素x/-x/不变,最后把序列变成各个元素都相等(序列每个元素只能进行操作一次) 思…

做自适应网页

1.需求: 接到的需求是做一个官网,同一个网址,在PC端和移动端显示不同,2套并不是简单的隐藏显示的差别。2.想法: 最先想到的是css3的媒体查询 media-screen 控制在不同尺寸下显示。这里说个题外话,css中的像…

git解决冲突 ios_听说你还在用 Git 命令解决代码冲突?

许多开发者在使用 Git 的时候会遇到代码冲突的情况,当两名开发者先后往同一个分支发出合并请求,或者多个分支的代码合并到一个分支时,代码冲突就会出现,进而引起分支无法自动合并的问题。这时,我们一般的解决流程是&am…

实战 MDT 2012(五)---升级安装

转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jqq1982.blog.51cto.com/515663/1114519XP升级到Windows7,以照传统的方法,需要我们的IT管理人员拿着光盘到客户端那里进行自定义安装,或者是用Gh…

27怎么去掉信息红点_27㎡老房装修后收纳空间达30㎡,厨房还多出1㎡

今天和大家分享的案例委托人包叔叔年轻时曾是一名光荣的救火英雄,但我们的救火英雄却对目前的居家环境一筹莫展!你能想象得到仅27㎡的一室户,还存在着以下好几点“匪夷所思”的居住难题吗?卫生间没做防水无法洗澡,一家…

个人对生活意义的观点

生活就像一面镜子,他能照见你有时自己不觉的善与恶.美与丑.智与愚......这也许就是人生的意义。因为这给了人完全了解自我的方法.途径,而人对自我的完全了解也就理解了宇宙,生活的意义在于爱与牵挂;生活的意义是自己而不是别人至于说到具体的…

MySQL - 权限

查看用户当前权限 show grants; 查看其他 MySQL 用户权限&#xff1a;  show grants for <username><host>; 授权 grant <privileges> on <databasename.tablename> to <username><host> identified by <123>; identified by非必须…