Java中一个进程对映四块区域分别是:
堆,堆栈,数据段,代码段
一般变量和引用是在堆栈中分配
对象是在堆中分配。我想问的是:对象不也是由变量和引用所组成吗?那按照上面所说,都放到堆栈中,那堆中放什么?
请大虾们详细帮我分析下Java内存的机制,有没有专门介绍内存的书?
堆,堆栈,数据段,代码段
一般变量和引用是在堆栈中分配
对象是在堆中分配。我想问的是:对象不也是由变量和引用所组成吗?那按照上面所说,都放到堆栈中,那堆中放什么?
请大虾们详细帮我分析下Java内存的机制,有没有专门介绍内存的书?
类的成员变量实际上是存在于堆中的。
1.类的静态变量,字符数据池,这些数据放到哪?是放到数据段吗?
2.类被加载加载到代码段吗?那么一旦类被加载后是不是一直存在于代码段,还是等CPU执行
完就被清除,等到下次用时,再被载入,
3.代码段使用来放程序的源代码吧,如果是,那代码段放多少源代码?
4.cpu在处理写入文件的指令(入write())时,是如何处理的?cpu如何实现控制作用?
5.变量名是写给人看的,那么计算机要找到这个变量是不是在内存中有个“变量名=地址”这种映射关系?
”里面含有各个方法的指针“----------我想JVM不会为每个对象都复制方法代码到堆中,只有可能是创建对象时,加载了类,那么类中的成员方法就被放入内存,而这个方法的地址就被放在了该对象的堆中,疑问是:难道类被加载后一直存在于代码段内存中?这好像也不可能,请大虾指点。