Java虚拟机JVM原理相关
啥是JVM啊。。。。哎。。好深奥有么有

-------------------------------------------------------------------------------------
第一篇:http://wenku.baidu.com/view/e53675da50e2524de5187e2c.html
java-jvm虚拟机原理第二篇:http://wenku.baidu.com/view/2b7fcd87ec3a87c24028c470.htmljava-jvm虚拟机原理------------------------------------------------------------------------------------JVM内存:
------------------------------------------------------------------------------参考1:http://wenku.baidu.com/view/2b7fcd87ec3a87c24028c470.htmljava-jvm虚拟机原理2,http://wenku.baidu.com/view/0288aede7f1922791688e89e.html3,http://wenku.baidu.com/view/8e1521d63186bceb19e8bbd4.html4,http://blog.csdn.net/luyee2010/article/details/8666274-----------------------------------------------------------------------------http://www.iteye.com/problems/79521
持久代是方法区还是堆中的?5- 在毕玄的<<java分布式应用>>一书中,明确指定持久代分布在方法区中,但我看了这张图
说持久代位于堆中,故求解
JVM 2012年2月29日 14:16
SilenceGG
87
0 0 0- 查看图片附件
添加评论
关注(0)
3个答案按时间排序按投票排序- 00
采纳的答案
首先你说的“持久代”仅仅是HotSpot存在的一个概念,并且将其置于方法区,JRocket与IBM的VM都不存在这个“持久代”,最新的HotSpot也计划将其移除。所以你说的都对,在heap中和在Method Area中并没定论。
建议参考RednaxelaFX的一贴:http://rednaxelafx.iteye.com/blog/905273
2012年2月29日 14:33
chenchao051
178
0 0 4
添加评论
- 00
而且一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。
2012年2月29日 14:39
OpenMind
627
0 0 3
添加评论
- 00
都对,方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
2012年2月29日 14:34
OpenMind
627
----------------------------------------------------------------------------
---------------------------------------------------------------------------
http://blog.itpub.net/post/42700/526674
常量池、perm(持久代)、方法区、栈
常量池、perm(持久代)、方法区、栈
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:
#类和接口的全限定名 #字段的名称的描述符 #方法和名称的描述符
虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集合,包括直接常量(string,integer和floating常量)和对其他类型,字段和方法的符号引用。
对于String常量,它的值在常量池中的。而JVM中的常量池在内存当中是以表的形式存在的,对于String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,注意:该表只存储文字字符串值,不存储符号引用。
$$在程序执行的时候,常量池会储存在Method Area,而不是堆中JVM构成:类装载子系统运行时数据区 方法区 堆(heap) Java栈(stack) PC寄存器 本地方法栈执行引擎
方法区和持久代的关系:
方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://blog.csdn.net/opmic/article/details/7788007
jvm 年轻代、年老代、持久代
年轻代 分为 Eden 区和2个survivor区
新建对象都保存在survivor区,当Eden区满则进行minorGC,将Eden区和一个survivor区清理到年老代中
这时不能被回收的对象被移动到另一个survivor区中,保持一个survivor区中是空的
当年老代满时进行fullGC
java-jvm虚拟机原理------------------------------------------------------------------------------------JVM内存:
------------------------------------------------------------------------------参考1:http://wenku.baidu.com/view/2b7fcd87ec3a87c24028c470.htmljava-jvm虚拟机原理2,http://wenku.baidu.com/view/0288aede7f1922791688e89e.html3,http://wenku.baidu.com/view/8e1521d63186bceb19e8bbd4.html4,http://blog.csdn.net/luyee2010/article/details/8666274-----------------------------------------------------------------------------http://www.iteye.com/problems/79521
持久代是方法区还是堆中的?5- 在毕玄的<<java分布式应用>>一书中,明确指定持久代分布在方法区中,但我看了这张图
说持久代位于堆中,故求解
JVM 2012年2月29日 14:16
SilenceGG
87
0 0 0- 查看图片附件
添加评论
关注(0)
3个答案按时间排序按投票排序- 00
采纳的答案
首先你说的“持久代”仅仅是HotSpot存在的一个概念,并且将其置于方法区,JRocket与IBM的VM都不存在这个“持久代”,最新的HotSpot也计划将其移除。所以你说的都对,在heap中和在Method Area中并没定论。
建议参考RednaxelaFX的一贴:http://rednaxelafx.iteye.com/blog/905273
2012年2月29日 14:33
chenchao051
178
0 0 4
添加评论
- 00
而且一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。
2012年2月29日 14:39
OpenMind
627
0 0 3
添加评论
- 00
都对,方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
2012年2月29日 14:34
OpenMind
627
----------------------------------------------------------------------------
---------------------------------------------------------------------------
http://blog.itpub.net/post/42700/526674
常量池、perm(持久代)、方法区、栈
常量池、perm(持久代)、方法区、栈
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:
#类和接口的全限定名 #字段的名称的描述符 #方法和名称的描述符
虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集合,包括直接常量(string,integer和floating常量)和对其他类型,字段和方法的符号引用。
对于String常量,它的值在常量池中的。而JVM中的常量池在内存当中是以表的形式存在的,对于String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,注意:该表只存储文字字符串值,不存储符号引用。
$$在程序执行的时候,常量池会储存在Method Area,而不是堆中JVM构成:类装载子系统运行时数据区 方法区 堆(heap) Java栈(stack) PC寄存器 本地方法栈执行引擎
方法区和持久代的关系:
方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://blog.csdn.net/opmic/article/details/7788007
jvm 年轻代、年老代、持久代
年轻代 分为 Eden 区和2个survivor区
新建对象都保存在survivor区,当Eden区满则进行minorGC,将Eden区和一个survivor区清理到年老代中
这时不能被回收的对象被移动到另一个survivor区中,保持一个survivor区中是空的
当年老代满时进行fullGC

------------------------------------------------------------------------------参考1:http://wenku.baidu.com/view/2b7fcd87ec3a87c24028c470.html
java-jvm虚拟机原理2,http://wenku.baidu.com/view/0288aede7f1922791688e89e.html3,http://wenku.baidu.com/view/8e1521d63186bceb19e8bbd4.html4,http://blog.csdn.net/luyee2010/article/details/8666274-----------------------------------------------------------------------------http://www.iteye.com/problems/79521
持久代是方法区还是堆中的?5- 在毕玄的<<java分布式应用>>一书中,明确指定持久代分布在方法区中,但我看了这张图
说持久代位于堆中,故求解
JVM 2012年2月29日 14:16
SilenceGG
87
0 0 0- 查看图片附件
添加评论
关注(0)
3个答案按时间排序按投票排序- 00
采纳的答案
首先你说的“持久代”仅仅是HotSpot存在的一个概念,并且将其置于方法区,JRocket与IBM的VM都不存在这个“持久代”,最新的HotSpot也计划将其移除。所以你说的都对,在heap中和在Method Area中并没定论。
建议参考RednaxelaFX的一贴:http://rednaxelafx.iteye.com/blog/905273
2012年2月29日 14:33
chenchao051
178
0 0 4
添加评论
- 00
而且一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。
2012年2月29日 14:39
OpenMind
627
0 0 3
添加评论
- 00
都对,方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
2012年2月29日 14:34
OpenMind
627
----------------------------------------------------------------------------
---------------------------------------------------------------------------
http://blog.itpub.net/post/42700/526674
常量池、perm(持久代)、方法区、栈
常量池、perm(持久代)、方法区、栈
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:
#类和接口的全限定名 #字段的名称的描述符 #方法和名称的描述符
虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集合,包括直接常量(string,integer和floating常量)和对其他类型,字段和方法的符号引用。
对于String常量,它的值在常量池中的。而JVM中的常量池在内存当中是以表的形式存在的,对于String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,注意:该表只存储文字字符串值,不存储符号引用。
$$在程序执行的时候,常量池会储存在Method Area,而不是堆中JVM构成:类装载子系统运行时数据区 方法区 堆(heap) Java栈(stack) PC寄存器 本地方法栈执行引擎
方法区和持久代的关系:
方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://blog.csdn.net/opmic/article/details/7788007
jvm 年轻代、年老代、持久代
年轻代 分为 Eden 区和2个survivor区
新建对象都保存在survivor区,当Eden区满则进行minorGC,将Eden区和一个survivor区清理到年老代中
这时不能被回收的对象被移动到另一个survivor区中,保持一个survivor区中是空的
当年老代满时进行fullGC
持久代是方法区还是堆中的?5- 在毕玄的<<java分布式应用>>一书中,明确指定持久代分布在方法区中,但我看了这张图
说持久代位于堆中,故求解
JVM 2012年2月29日 14:16
SilenceGG
87
0 0 0- 查看图片附件
添加评论
关注(0)
3个答案按时间排序按投票排序- 00
采纳的答案
首先你说的“持久代”仅仅是HotSpot存在的一个概念,并且将其置于方法区,JRocket与IBM的VM都不存在这个“持久代”,最新的HotSpot也计划将其移除。所以你说的都对,在heap中和在Method Area中并没定论。
建议参考RednaxelaFX的一贴:http://rednaxelafx.iteye.com/blog/905273
2012年2月29日 14:33
chenchao051
178
0 0 4
添加评论
- 00
而且一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。
2012年2月29日 14:39
OpenMind
627
0 0 3
添加评论
- 00
都对,方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
2012年2月29日 14:34
OpenMind
627
说持久代位于堆中,故求解
JVM 2012年2月29日 14:16
SilenceGG 87
0 0 0
- 查看图片附件
添加评论
关注(0)
- 00
采纳的答案
首先你说的“持久代”仅仅是HotSpot存在的一个概念,并且将其置于方法区,JRocket与IBM的VM都不存在这个“持久代”,最新的HotSpot也计划将其移除。所以你说的都对,在heap中和在Method Area中并没定论。
2012年2月29日 14:33
建议参考RednaxelaFX的一贴:http://rednaxelafx.iteye.com/blog/905273
chenchao051
178
0 0 4
添加评论
- 00
而且一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。
2012年2月29日 14:39
OpenMind
627
0 0 3
添加评论
- 00
都对,方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。
2012年2月29日 14:34
OpenMind
627
----------------------------------------------------------------------------
---------------------------------------------------------------------------
http://blog.itpub.net/post/42700/526674
常量池、perm(持久代)、方法区、栈
常量池、perm(持久代)、方法区、栈
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:
#类和接口的全限定名 #字段的名称的描述符 #方法和名称的描述符虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集合,包括直接常量(string,integer和floating常量)和对其他类型,字段和方法的符号引用。
对于String常量,它的值在常量池中的。而JVM中的常量池在内存当中是以表的形式存在的,对于String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,注意:该表只存储文字字符串值,不存储符号引用。
$$在程序执行的时候,常量池会储存在Method Area,而不是堆中
JVM构成:类装载子系统运行时数据区 方法区 堆(heap) Java栈(stack) PC寄存器 本地方法栈执行引擎
方法区和持久代的关系:
方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。-----------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
http://blog.csdn.net/opmic/article/details/7788007
jvm 年轻代、年老代、持久代
年轻代 分为 Eden 区和2个survivor区
新建对象都保存在survivor区,当Eden区满则进行minorGC,将Eden区和一个survivor区清理到年老代中
这时不能被回收的对象被移动到另一个survivor区中,保持一个survivor区中是空的
当年老代满时进行fullGC
添加评论
关注(0)
chenchao051
OpenMind