社区
Java SE
帖子详情
静态方法在JVM运行的原理不是很理解????
zaixiankaifa
2011-04-09 09:49:52
我是这样理解的:静态方法先在持久层加载,然后,在栈里面划分出一个方法空间给它, 然后在堆里面出现一个空间存放该静态方法的“方法首字母的地址值”,接着,在堆的另一个地方,出现一个该方法的对象?
不知道我这样理解对不对,请各位大师请教!!!
...全文
765
6
打赏
收藏
静态方法在JVM运行的原理不是很理解????
我是这样理解的:静态方法先在持久层加载,然后,在栈里面划分出一个方法空间给它, 然后在堆里面出现一个空间存放该静态方法的“方法首字母的地址值”,接着,在堆的另一个地方,出现一个该方法的对象? 不知道我这样理解对不对,请各位大师请教!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hepeng_8
2011-04-09
打赏
举报
回复
支持二路的说法就是那样的
baobao04551
2011-04-09
打赏
举报
回复
[Quote=引用 1 楼 ticmy 的回复:]
有点像,但不是你说的那样
“静态方法先在持久层加载”,不知所云
首先.class文件装载,会将class文件中的信息解析成厂商特定的数据结构,存在方法区
当调用静态方法时,会使用invokestatic指令,其参数是该类的常量池索引,该索引指向一个Method,刚开始时,这个Method也只是字符串描述,包括方法所属类名,方法名,描述符等。第一次调用该方法时,会去查找该方法在方法区……
[/Quote]
楼上回答的好,顶一个,补充两句:
LZ的问题确实不太明白,但是我想你是想弄清楚静态方法与普通方法执行时的区别吧?我觉得加载的话,楼上回答的很好了,执行的话主要有以下三点区别:
1) 用的指令不一样,静态方法用invokestatic,而普通方法有invokespecial, invokevirtual,CSR 292还新增了invokedanymic.
2)查找的方式不一样:静态方法肯定只在自己本身的class的常量区中取查找,而普通的方法还会搜索继承的类和接口。
3) 执行时带的变量不一样,这一点和C++的原理相似,就是静态方法执行时不会把本身对象压入栈作为参数,因为他不需要,而普通方法则需要本身对象(this指针)。
龙四
2011-04-09
打赏
举报
回复
有点像,但不是你说的那样
“静态方法先在持久层加载”,不知所云
首先.class文件装载,会将class文件中的信息解析成厂商特定的数据结构,存在方法区
当调用静态方法时,会使用invokestatic指令,其参数是该类的常量池索引,该索引指向一个Method,刚开始时,这个Method也只是字符串描述,包括方法所属类名,方法名,描述符等。第一次调用该方法时,会去查找该方法在方法区的位置,然后将常量池中该方法的地方替换成指针
至于如何去查找方法,jvm实现可能会使用方法表,如果使用方法表就简单了,如果没有用方法表,它会按照该类,超类,实现的接口的顺序去查找方法的地址
详细内容可以参考《深入Java虚拟机》第二版第八章
magicluo
2011-04-09
打赏
举报
回复
你不要凭空想象啦
《深入java 虚拟机(第二版)》 说的应该是非常权威了 ,推荐你看看吧
不过已经绝版,电子版的也不错
a735194357
2011-04-09
打赏
举报
回复
学习中……
十年架构师详解
JVM
运行
原理
做Java开发的几乎都知
JVM
这个名词,但是由于
JVM
对实际的简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及
理解
什么是
JVM
,以及弄清楚
JVM
的工作
原理
,个人认为这块还是非常有必要去认真了解及学习的,特别是刚入门或入门不久的java开发来说,
JVM
是Java的基石! 1.
JVM
简析 作为一名Java使用者,掌握
JVM
的体系...
JVM
原理
-超详细总结
JVM
概念
JVM
是java的核心和基础在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。java编译器只要面向
JVM
,生成
JVM
能
理解
的代码或字节码文件。Java源文件经编译成字节码程序,通过
JVM
将每一条指令翻译成不同平台机器码,通过特定平台
运行
。
JVM
的生命周期:
JVM
的诞生:当启动一个Java程序时,一个
JVM
实例就产生了,任何一个拥有public static void main(Strin
静态方法
存放在
jvm
哪里_
JVM
系列(1)java8的内存结构
在一开始学习java的时候,那时候是在网上看视频,老师就经常提到什么对象分配在堆区,什么在栈区,那时候和
理解
,后来
理解
了就想着写一篇文章好好的去梳理一下。想说一下这篇文章的脉络:首先,研究java7的内存结构,并对其进行一个详细的介绍,因为
理解
了java7之后java8比较容易
理解
接下来,使用一个例子来详解我们在
运行
一个程序的时候,代码在java虚拟机中的存储和转化。最后,我们给出java8的内存...
JVM
原理
与调优实战
本文深入探讨了Java虚拟机(
JVM
)的核心技术,从
JVM
的基本概念、内存结构、类加载机制、执行引擎
原理
到垃圾回收机制,全面解析了
JVM
的
运行
机制。文章还提供了
JVM
调优的实战技巧,包括常见启动参数、调优目标以及监控与排查工具的使用。此外,通过典型性能问题的案例分析,帮助读者
理解
如何解决实际开发中的性能瓶颈。最后,文章总结了学习
JVM
的推荐路径,并预告了后续内容,为Java工程师提供了全面的
JVM
学习指南。
说说
JVM
的底层
原理
(JAVA是如何
运行
的)?
Java 虚拟机(
JVM
)是 Java 程序
运行
的核心环境,其设计融合了内存管理、类加载、垃圾回收和高效执行等复杂机制。以下从底层视角详细解析其核心模块,并结合实际场景说明其工作
原理
。,不仅能优化应用性能(如减少 Full GC 停顿),还能有效排查内存泄漏、锁竞争等问题,是高级 Java 开发的必备技能。类加载是
JVM
动态性的基石,其触发条件包括首次使用类(如。、反射调用等)或继承父类时。:静态集合持有对象导致无法回收。
Java SE
62,634
社区成员
307,265
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章