A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM马明宇 中级黑马   /  2013-3-27 23:23  /  1377 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM马明宇 于 2013-3-28 15:37 编辑

new构造函数创建对象以后,对象名打点调用一个无参的普通方法,在内存中的执行顺序是怎样的?栈内存和方法区中是怎样的实现?是否是直接到方法区中执行方法体?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 米腾达 于 2013-3-28 09:08 编辑

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

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

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马