精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-28
Godlikeme 写道 ls,好像是c++!
如果JAVA不是这样设计的,那我会很惊讶。 ![]() |
|
返回顶楼 | |
发表时间:2007-05-28
应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。 |
|
返回顶楼 | |
发表时间:2007-05-28
Godlikeme 写道 应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。 我的意思是,类的方法就一份,类只有一个,然而类的对象会有无数个。 |
|
返回顶楼 | |
发表时间:2007-05-28
Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。
该类的每一个对象,只是保持该对象的数据成员而已,不会每个对象都保存一份独立的方法定义副本。 调用该对象的方法时,只是在所执行的线程的方法调用栈中增加一个方法执行情况记录:记录该本次对被执行方法的局部变量的中间值等。 这也从本根上说明了,定义在方法内部的局部变量是多线程安全的(每个线程都保持一份不同的执行数据副本), 只要该方法只是使用局部变量,不会对全局变量进行“写”操作,或者使用的全局共享资源(如DataSource)是线程安全的,便可以称该方法是线程安全的,Spring的XxxxTemplate方法大部分属于此类型。 ps:现象解释:为什么过多的递归调用会outofmemoryerror 因为每个方法调用都是往调用栈增加一个元素,过多的调用,这个栈就会越来越大,超过java规定的长度就会抛出这个异常 以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响 |
|
返回顶楼 | |
发表时间:2007-05-28
还没有给题目答案呢,
|
|
返回顶楼 | |
发表时间:2007-05-28
zhuyi8319 写道 还没有给题目答案呢,
题目答案、对错似乎不重要~~~~ 有用到相关应用时,到时翻翻书自己搞明白就是了 要答案可以给我发站内消息要阿 你的回帖属于“灌水”,和我这个回帖一样,可能被投隐藏扣分 |
|
返回顶楼 | |
发表时间:2007-05-28
Qieqie 写道 以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响 既然是这样也就不用拿来考核别人的能力了; 另外说一句关于底层的,大家还是往UNIX/LINUX方向走,绝对能满足你对底层的渴望。楼主说的,不懂JVM怎么能玩好JAVA?相反不懂TCP/IP协议以及整个网络模型各层的作用,怎么用好SOCKET?如果你懂IP如何分片,TCP分组如何重组,懂得知道什么是MTU,MSS,滑窗协议,阻塞窗口,那你就可以最大限度的利用网络资源,并且可以防止发送过量数据导致网络阻塞等等等等,这些系统都给你做好了,API都给你指好了路,你顺着用就行了,要想挖底层,我估计你最后会拿起物理媒体,电子信号,通信之类的书本。因为上层要把数据发给其他机器还得通过更底层的物理层,转化成电信号后通过物理媒体传输。 |
|
返回顶楼 | |
发表时间:2007-05-28
ken1984 写道 Qieqie 写道 以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响 楼主说的,不懂JVM怎么能玩好JAVA?相反不懂TCP/IP协议以及整个网络模型各层的作用,怎么用好SOCKET?如果你懂IP如何分片,TCP分组如何重组,懂得知道什么是MTU,MSS,滑窗协议,阻塞窗口,那你就可以最大限度的利用网络资源,并且可以防止发送过量数据导致网络阻塞等等等等,这些系统都给你做好了,API都给你指好了路,你顺着用就行了,要想挖底层,我估计你最后会拿起物理媒体,电子信号,通信之类的书本。因为上层要把数据发给其他机器还得通过更底层的物理层,转化成电信号后通过物理媒体传输。 凡事都有个度,没必要这么偏颇。在一定限度内了解一些底层的知识不是什么坏事。 而且做java不一定都是开发j2ee, java的应用领域那么广泛, 所以需要有广泛的知识储备才行。 |
|
返回顶楼 | |
发表时间:2007-05-28
Qieqie 写道 Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。
该类的每一个对象,只是保持该对象的数据成员而已,不会每个对象都保存一份独立的方法定义副本。 调用该对象的方法时,只是在所执行的线程的方法调用栈中增加一个方法执行情况记录:记录该本次对被执行方法的局部变量的中间值等。 这也从本根上说明了,定义在方法内部的局部变量是多线程安全的(每个线程都保持一份不同的执行数据副本), 只要该方法只是使用局部变量,不会对全局变量进行“写”操作,或者使用的全局共享资源(如DataSource)是线程安全的,便可以称该方法是线程安全的,Spring的XxxxTemplate方法大部分属于此类型。 ps:现象解释:为什么过多的递归调用会outofmemoryerror 因为每个方法调用都是往调用栈增加一个元素,过多的调用,这个栈就会越来越大,超过java规定的长度就会抛出这个异常 以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响 能说道这个程度已经不容易了,估计没看过jvm深入浅出还是有点难度地, 基本上没什么问题吧。 但对于这个红字是有问题的,因为读也有 data race 的问题。 |
|
返回顶楼 | |
发表时间:2007-05-28
貌似我应该没直接说“不懂JVM怎么能玩好JAVA”,虽有嫌疑。反正这个论点可能有点武断,但是如果能搞懂JVM却有助从更根本的地方掌握JAVA语言,或者说玩好了,有时出现“怪异”的事情时,也能胸有成竹解决之。
(JVM本来就是JAVA的OS,想想OS的重要性就是了)。 (说JVM重要的人-包括现在的我-不代表他就能完全精通JVM。我绝对没有完全精通JVM,但一般的JVM/OS知识我有去了解,我能感觉到对我有用) 底层这个无底洞,不能说一概不知,但也适可而止,两个极端都不行。 |
|
返回顶楼 | |