一个多线程程序的内存分布实例
2017-01-22 10:00:23 0 举报
登录查看完整内容
一个多线程程序的内存分布实例中,通常包含多个线程共享的全局变量、堆栈空间以及每个线程独有的栈空间。全局变量存储在整个进程中,可以被所有线程访问和修改。堆栈空间用于存储函数调用时的局部变量和返回地址。每个线程都有自己的栈空间,用于存储该线程特有的局部变量和函数调用信息。此外,每个线程还可能拥有自己的堆空间,用于动态分配的内存。通过合理管理这些内存区域,多线程程序可以实现高效的并发执行和资源利用。
作者其他创作
大纲/内容
局部变量表(略)
局部变量表
线程A
方法返回地址
Thread2的对象实例
counter reference线程名 B……
动态链接(略)
counter.countadd()的栈帧
操作数栈
对象锁作用范围
count的副本
run()的栈帧
main()的栈帧
方法返回地址(略)
同步
操作数栈(略)
count++
Thread2 reference
方法返回地址(用于告知counter.countadd()执行完毕后,返回到这个地址执行)
counter的对象实例
Int count
方法返回地址(用于告知System.out.println()执行完毕后,返回到这个地址执行))
Thread1.start()的栈帧
Thread1的对象实例
counter reference线程名 A……
线程B的虚拟机栈
System.out.println()的栈帧
线程B(和线程A一样)
主线程
主虚拟机栈
写回
Thread1 reference
counter reference
调用System.out.printlln()
调用打印方法
APP:Counter的堆内存
线程A的虚拟机栈
Thread2.start()的栈帧
0 条评论
回复 删除
下一页