1.了解堆,栈,常量池

(1)堆:存放所有new出来的对象(实例化的对象);

(2)栈:存放基本数据变量和对象的引用,对象(new出来的对象)本身不存在在栈中,

而是存放在堆中或者常量池中(字符串对象存放在常量池中);

(3)常量池:存放基本类型常量和字符串常量。

(4)对于字符串(String是类):其对象变量都是存储在栈中的,如果是编译期已经创建好

(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。

2.区域划分

JVM五个核心区域:

1.程序计数器:记录当前线程锁执行的字节码行号指示器。(私有)

2.虚拟机栈:用于存储局部变量表、操作数栈、动态链接、方法出口等信息。(私有)

3.本地方法栈:和Java虚拟机栈类似,不过是为JVM用到的Native方法服务。(私有)

4.堆:存放实例化数据。(共享)

5.方法区:存放类信息、常量、静态变量以及即时编译器编译后的代码等数据。(共享)

当虚拟机发现某个方法或代码块的运行特别频繁,为了提高热点代码的执行效率,在运行时,

虚拟机将会把这些代码编译成本地机器码,并以各种手段尽可能地进行代码优化,这个过程就叫即时编译,

共享: 堆和方法区是所有线程共享的资源

 

3.JDK1.8使用元空间代替了永久代

为什么舍弃永久代:永久代在使用中容易出现内存经常不够用或发生内存泄露

区别:元空间并不在虚拟机中,而是使用本地内存。

元空间了解:

  • 元空间是JDK1.8之后出现的,之前使用的是永久代
  • 元空间是方法区的一种实现方式,元空间是方法区的在HotSpot jvm 中的实现
  • 元空间存放着类的信息、方法数据、方法代码、常量池等
  • 编译的时候代码里的字符串就会被编译成对象,然后被堆里的引用对象引用。
  • 元空间并不在虚拟机中,而是使用本地内存。

4.

原文地址:http://www.cnblogs.com/wang1999an/p/16832983.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性