Java中内存的问题 15
学java的时候经常会提到内存的问题,总是会搞的我一头雾水(我是学java的,学过c,但是只是对c有一定的了解)怎么补充下关于内存的知识?学汇编行吗?...
学java的时候经常会提到内存的问题,总是会搞的我一头雾水 (我是学java的,学过c,但是只是对c有一定的了解)
怎么补充下 关于内存的知识? 学汇编行吗? 展开
怎么补充下 关于内存的知识? 学汇编行吗? 展开
3个回答
展开全部
栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄
至于内存回收,java是自动管理的一般不需要手动干预,但是还是要注意内存泄露的问题
Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄
至于内存回收,java是自动管理的一般不需要手动干预,但是还是要注意内存泄露的问题
展开全部
java提到的内存通常是指Java Heap和Stack;和C/C++中的内存的概念完全不一样;想补充的话,多看看JVM的文档,比如GC垃圾回收等概念。汇编如果用不到的话,没必要学;如果你个人喜好,学习汇编长远来看当然会很有好处。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学java不用考虑太多内存的问题,不用想太多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询