虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,必须先执行相应类的加载过程。

  类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。假设Java堆中内存是绝对规整的,所有用过的内存放到一边,空闲的内存放到一边,中间放着指针作为分界点的指示器,那所分配内存仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离,这种分配方式称为“指针碰撞”。如果Java堆的内存并不是规整的,虚拟机必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式称为“空闲列表”。

最新文章

  1. hdu 3746 Cyclic Nacklace
  2. appium案例
  3. C#根据网址生成静态页面
  4. openstack 常用命令
  5. chrome:// 的秘密!!一些有用的命令!
  6. 模块化定义JS,让统一文件夹内相同的变量不冲突
  7. android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK
  8. Hadoop 排序
  9. Android模拟器Genymotion使用详解
  10. Leetcode 75.颜色分类 By Python
  11. Core dump去哪里了?
  12. 【转】SAP HANA学习资料大全[非常完善的学习资料汇总]
  13. memcached -- 运行memcached
  14. service citrix xcenserver health check service (xenserver healthcheck) failed to start verfy that you have sufficient privileges to srart system services
  15. web06-PanduanLogin
  16. windows下python2.7版本numpy,Scipy,matplotlib,sklearn安装
  17. C#特性杂谈
  18. js中的target与currentTarget的区别<转>
  19. Linux 基础一---操作系统&常用命令
  20. 基于MPLAB X IDE配置位设置讲解

热门文章

  1. 小程序之 input框设置placeholder的style
  2. MySQL自定义函数递归查询
  3. highcharts数据标签显示在柱状图里面解决办法
  4. P2822 组合数问题
  5. Docker Swarm集群中部署Traefik负载均衡器
  6. Ant Design of React 框架使用总结1
  7. RESTful协议
  8. UML序列图参考资料
  9. Node.js 8 中的 util.promisify的详解
  10. 关于leal和mov