java全局代码区在内存中什么位置? java全局代码区内存中什么位置?最好画有一个图例让我看看。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说的是static声明的代码吧,在heap中,画图?我看不用了吧 我在网上查了下 原来你说的全局代码是static块啊!觉得java里没这种说法吧!是c中的说法如果调用static块的话,我觉得jvm不会存储static方法!static初始化块和static变量会集中起来放在class文件下的一个叫<Cinit>的方法里翻译成字节码存储在class文件里!当然类变量是存储在方法区中.....这个<cinit>方法只可以被虚拟机调用!用户是不可视的!初始化的时候会自动调用这个方法!! 除了常量以外的类(静态)变量存储在方法区 楼主想了解这方面的知识的话建议去看看《深入Java虚拟机》 用static的修饰的变量和方法,实际上是指定了这些变量和方法在内存中的“固定位置”-static storage,可以理解为所有实例对象共有的内存空间。static变量有点类似于C中的全局变量的概念;静态表示的是内存的共享,就是它的每一个实例都指向同一个内存地址。把static拿来,就是告诉JVM它是静态的,它的引用(含间接引用)都是指向同一个位置,在那个地方,你把它改了,它就不会变成原样,你把它清理了,它就不会回来了。 那静态变量与方法是在什么时候初始化的呢?对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。 我们常可看到类似以下的例子来说明这个问题:Java代码 1. class Student{ 2. static int numberOfStudents=0; 3. Student() 4. { 5. numberOfStudents++; 6. } 7. } 每一次创建一个新的Student实例时,成员numberOfStudents都会不断的递增,并且所有的Student实例都访问同一个 numberOfStudents变量,实际上int numberOfStudents变量在内存中只存储在一个位置上 static{}偶只知道初始化时,这段代码最先被执行 web人员开始学习wap开发,大家有什么好的建议么? 这个,是缺少转义符还是Java的Bug? 求个随机相加的运算 大家帮我看看这段程序怎么了!谢谢! 替换字符不成功,急急急,请指教高人指教. 第一次运行java程序就如此郁闷 问一下!怎么结贴阿? 有人知道如何把outlook的msg邮件使用java给解析出来?如同javamail解析eml文件一样 JBOSS的问题 如何实现和操作平台的连接?? 高手帮忙 怎样用Java获得Windows系统的应用程序列表??
觉得java里没这种说法吧!是c中的说法如果调用static块的话,我觉得jvm不会存储static方法!
static初始化块和static变量会集中起来放在class文件下的一个叫<Cinit>的方法里翻译成字节码存储在class文件里!当然类变量是存储在方法区中.....这个<cinit>方法只可以被虚拟机调用!用户是不可视的!
初始化的时候会自动调用这个方法!!
那静态变量与方法是在什么时候初始化的呢?对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。
我们常可看到类似以下的例子来说明这个问题:
Java代码
1. class Student{
2. static int numberOfStudents=0;
3. Student()
4. {
5. numberOfStudents++;
6. }
7. }
每一次创建一个新的Student实例时,成员numberOfStudents都会不断的递增,并且所有的Student实例都访问同一个 numberOfStudents变量,实际上int numberOfStudents变量在内存中只存储在一个位置上
偶只知道初始化时,这段代码最先被执行