堆的内存和栈的内存游什么不同???
解决方案 »
- java.io.FileNotFoundException: (系统找不到指定的文件。)
- 关于4位整数利用求模来进行加密解密的问题.
- 几个面世题求解 最好能给出解释 谢谢
- 请教各位大虾java通信数据传输的问题,困扰很久。。。郁闷。
- Jini是个什么东东啊,在实际编程中用得多不?
- “高分求解” 如何在JBuilder中调整JButton上的文本随着JButton的大小改变而改变!!
- java在B/S开发以外的东西
- ISNetwork 提供者问题
- 什么地方出错了????
- Java里的如果ResultSet关闭 Connection自动关闭怎么实现
- 如何做一个主窗体和子窗体?
- 帮看看代码,怎么运行有误,谢谢
每个线程启动时JVM会分配1个栈给它:存放线程状态
堆,就是那些由new分配的内存块,他们的释放在c++和c中是程序员的职责,如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。在java中是JVM的职责,由垃圾收集机制负责回收。
据个例子:void f() { int* p=new int[5]; } 一句话就包含了堆与栈:汇编代码可以看到他们的不同:
00401028 push 14h
0040102A call operator new (00401060)
0040102F add esp,4
00401032 mov dword ptr [ebp-8],eax
00401035 mov eax,dword ptr [ebp-8]
00401038 mov dword ptr [ebp-4],eax