MyException - 我的异常网
当前位置:我的异常网» J2SE » java 栈内存储器,堆内存,方法区,常量池,静态去到

java 栈内存储器,堆内存,方法区,常量池,静态去到底有什么关联, 方法区,常量池,静态区又存在哪里啊,栈中,还是另外的一块空间

www.MyException.Cn  网友分享于:2015-08-26  浏览:75次
java 栈内存,堆内存,方法区,常量池,静态去到底有什么关联, 方法区,常量池,静态区又存在哪里啊,栈中,还是另外的一块空间?
被这几个搞糊涂了?

请高手明示, 我应该看哪些东西才能弄明白这些

------解决方案--------------------
java虚拟机
------解决方案--------------------
现在流行"授人以渔"了哦,给你个连接哦http://www.ibm.com/developerworks/cn/java/coretech/java-vm.html?S_TACT=105AGX52&S_CMP=content
自己加油哦

------解决方案--------------------
简单的说,栈可以共享,堆不可以。
所以,那些方法,常量,静态都在栈里。
------解决方案--------------------
首先要想了解这些东西,需要有些汇编语言的知识。

因为编写过汇编语言的人都知道,这些东西都要手动去编写(即:手动的编写代码段,栈段,当然了堆里的东西是动态分配的)。

《深入Java虚拟机》(第二版)很不错。
------解决方案--------------------
王爽的8086汇编写的很不错吼~~
------解决方案--------------------
从理伦上讲这几个区域是独立的,我只知道 stack(栈) 里面放变量还有引用, datasigment(数据区) 放 字符串和常量,还有static变量 , heap(堆)里面放对象还有数组等等,
codesigment(代码区)就放其它的一些代码,我只能解释这么多,我也没有深究,楼主建议你去看一看马士兵的视频在第三章里面讲的很清楚的
------解决方案--------------------
这些实现并非在java虚拟机实现规范之内,java虚拟机规范只是定义了这些名词与虚拟机参照实现思想,但是至于这些内存要如何去分配是虚拟机设计者自己去考虑的问题,他们可以分为不同内存去存放,也可以同一块内存来存放,虚拟机规范只规定你要实现怎样的功能,并没有规定你要如何去实现。
如果你想搞清楚这些东西的作用,虚拟机规范文档里面有,但是这些只可以说是一种设计参照,具体要看jdk设计者如何去设计了。
虚拟机的规范文档可以在sun官方网站下到。
------解决方案--------------------
那些东西是很重要,但是学习要循序渐进,你先记住有这么个东西,学好基础再去研究这些东西。
那些都是虚拟机规范中的内容,它们针对的对象不是java程序员,而是虚拟机设计者,你现在虚拟机规范还不知道以及这些东西的概念也不清楚就研究他们实在是不合适。
sun的官方有虚拟机规范文档下载,你可以去下载来看看,还有你所问的那些堆与栈的存放方式以及静态区与对象池如何实现等等,每个虚拟机都是不同的,规范文档并没有指明,而且虚拟机的内存实现是需要适应不同平台与机器的,例如在嵌入式设备中,内存限制很大,所以内存设计上会注重节约内存来牺牲运行速度,所以实现会把堆、栈以及对象池等等都放在同一段内存中,这样设计为了提高速度,又不得不使用类的静态连接而不用动态连接等等。如果在服务器中,jdk的内存很充裕,那么可以把各个内存存放都分开,都建立一套自己的存储空间以及存储方式,而且还可以多加一些附加内存来加快访问速度。对于平台限制也很大,不同平台对于内存的处理以及分配方式都不同,例如有的平台是低位在前的,有的平台又有可能是高位在前的,有的平台是多线程机制的,而有的平台是没有线程概念的多进程机制的等等。
由于java需要跨平台,所以虚拟机规范并没有规定楼主所提的那些东西要如何去实现,只是规定需要实现这些东西,所以你问他们是否单独存放以及存放在哪都是不合适的。如果你想研究他们的内存机制如何实现只能拿一个特列来研究,而这个特例也绝对不具有代表性。不过我推荐楼主还是去研究sun的官方的j2se的jdk吧,至少有这么个特例看似标准,但是那对你的实际用途并不大,因为当你把应用迁移到weblogic或者IBM的一些产品上面时会发现你研究的那一套内存方式完全没用了,因为那些JDK实现与SUN官方的实现截然不同了。
而且java语言设计的初衷就是要规避java对内存的访问,吧代码开发保护在一个安全的机制下(当然,完全逃避内存问题是不可能的),所以你只要知道如何做能够节约内存,学好普通的数据结构差不多够用了,至于虚拟机的内存机制如何,对实际用途不大。

文章评论

要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
一个程序员的时间管理
一个程序员的时间管理
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
编程语言是女人
编程语言是女人
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
老程序员的下场
老程序员的下场
程序员的鄙视链
程序员的鄙视链
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
 程序员的样子
程序员的样子
如何成为一名黑客
如何成为一名黑客
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
10个调试和排错的小建议
10个调试和排错的小建议
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员必看的十大电影
程序员必看的十大电影
鲜为人知的编程真相
鲜为人知的编程真相
程序员和编码员之间的区别
程序员和编码员之间的区别
每天工作4小时的程序员
每天工作4小时的程序员
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
那些争议最大的编程观点
那些争议最大的编程观点
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
我的丈夫是个程序员
我的丈夫是个程序员
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
Java程序员必看电影
Java程序员必看电影
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员都该阅读的书
程序员都该阅读的书
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
漫画:程序员的工作
漫画:程序员的工作
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
中美印日四国程序员比较
中美印日四国程序员比较
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
总结2014中国互联网十大段子
总结2014中国互联网十大段子
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
代码女神横空出世
代码女神横空出世
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有