200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 静态方法多次调用内存_java虚拟机的内存分析

静态方法多次调用内存_java虚拟机的内存分析

时间:2018-07-30 21:57:53

相关推荐

静态方法多次调用内存_java虚拟机的内存分析

当我们执行main方法的时候,我们就创建了一个线程,然后在线程里面创建了栈,执行方法,当碰到new的时候我们就在堆里面创建了一个新的对象。

编译类首先找到这个类然后把代码加载到空间里面,然后方法区里面就应该有类的信息了。main方法也是静态方法,执行main方法的时候就会在栈里面开辟一个栈帧,new的时候就会在堆里新建一个对象,每个对象有一个地址。

方法区其实也在堆里面

因为方法区的作用比较特殊,所以我们单独列出来

我们启动一个程序的时候,这个程序会包含很多的线程

我们方法执行的相关调用都在栈里面

每个方法被调用都会创建一个栈帧

我们的虚拟机会为每一个线程创建一个栈我们启动一个程序的时候,这个程序会包含很多的线程。jvm会为每个线程创建一个独立的栈,多个线程之间都是独立的,不能共享。

1。单进程单线程:一个人在一个桌子上吃菜。

2。单进程多线程:多个人在同一个桌子上一起吃菜。

3。多进程单线程:多个人每个人在自己的桌子上吃菜。

多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了。。。此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢。

局部变量都在方法里面放着,然后这个方法里面又调用一个新的方法,原来的方法没有关闭。

我们方法执行的相关调用都在这个栈里面,每个方法被调用的时候都会创建一个栈帧。

一个线程里面有一个栈,栈里面有多个栈帧,它们遵循的是先进后出原则。

栈是一个连续的空间,不像堆是乱放的

当我们new对象的时候就说明堆里面多了一个对象

用static修饰的都叫静态方法

当我们在调用main方法的时候就会开辟一个栈帧

建好的堆里面的每个对象都有一个地址,每个对象叫一个内存块。

通过栈来找堆里面的对象对应的属性和方法

栈里面可以存放实际参数和局部变量等

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。