怎样用java实现内存动态分配

 我来答
pieryon
推荐于2017-10-09 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14411 获赞数:166864
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
1、java是如何管理内存的

Java的内存管理就是对象的分配和释放问题。(两部分)
分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。
释放 :对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了JVM的工作。因为,GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC都需要进行监控。
2、 JVM的内存区域组成
java把内存分两种:一种是栈内存,另一种是堆内存1。在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;2。堆内存用来存放由new创建的对象和数组以及对象的实例变量 在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由java虚拟机的自动垃圾回收器来管理
堆和栈的优缺点
堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。
缺点就是要在运行时动态分配内存,存取速度较慢; 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。
另外,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。
19870830wq
2011-10-26 · TA获得超过251个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:170万
展开全部
java本身的机制就是动态的内存分配,不需要手工管理的,可以有效的防止内存溢出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuyue198692
2011-10-28 · TA获得超过442个赞
知道小有建树答主
回答量:105
采纳率:0%
帮助的人:157万
展开全部
java内存动态分配?
Java虚拟机的内存区域Java中对象内存的分配是在Java虚拟机中进行的。
也就是说你在java中直接new一个对象就可以了,不需要去释放。
虚拟机里有垃圾回收,垃圾回收分full gc 和普通gc,这些想了解详细可以去查查资料。
java其实帮你完成了这些繁琐的过程,加速你的开发过程。
加入你真想去弄动态分配内存的东西,建议你还是用C++,并了解下placement new的原理。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sml0901
2011-10-27
知道答主
回答量:66
采纳率:0%
帮助的人:24.5万
展开全部
呵呵 你以前学的C/C++吗
java里面new出来的对象 都是虚拟机自动在堆内分配内存空间的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式