黑马程序员技术交流社区

标题: 内存中的执行顺序问题 [打印本页]

作者: HM马明宇    时间: 2013-3-27 23:23
标题: 内存中的执行顺序问题
本帖最后由 HM马明宇 于 2013-3-28 15:37 编辑

new构造函数创建对象以后,对象名打点调用一个无参的普通方法,在内存中的执行顺序是怎样的?栈内存和方法区中是怎样的实现?是否是直接到方法区中执行方法体?
作者: 米腾达    时间: 2013-3-28 09:05
本帖最后由 米腾达 于 2013-3-28 09:08 编辑

1、对象调查用一个方法后,JVM会在方法区中找到该代码段并执行,然后将该函数中的参数、局部变量、中间运行结果等压入java栈当中,等到方法运行完毕,栈中的数据也就弹出释放,该方法调用结束。另外要说的是,对象里存储的方法是一个函数的入口地址,当对象调用函数时,就会通过这个入口找到方法区中的代码。
2、在内存中,栈是用于存放程序临时创建的局部变量和函数参数的,属于动态的内存分配,每个进程都有且仅有一个它自己的java栈,当在这个进程中每次进行函数调用时,都会从这个栈中占用一段区域,等方法调用结束后,会释放这段区域,只能被一个进程访问;方法区是用于存放程序代码的,java中也就是.class文件,它是由所有的进程所共享的。
3、是直接去方法体中找到代码并执行。

这些都是JVM的底层执行过程,要是感兴趣的话,就看看《深入理解java虚拟机》




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2