Java内存空间分两种,一种是栈内存,有多个,一种是堆内存,只有一个,在堆内存中又有一块方法区。

方法区中存储的是:类的信息(类名,类的直接父类,类的访问修饰符),类变量,类方法代码,实例方法代码,常量池。注意没有实例变量。

当使用new创建一个对象的时候,JVM实际上做了三件事:加载类,创建该类的对象,初始化。

加载类就是把类加载方法区,有类信息,类变量,类方法,实例方法,常量(包含字符串常量),加载完后,需要在堆内存中开辟一块空间,完成对象的创建。堆内存中的对象空间只有实例变量,包括基本数据类型的数据和引用类型的数据,是不包含实例方法和静态方法和静态变量的,也就是说实例方法和静态方法和静态变量是被所有该类的对象所共享的。对象的初始化是由方法区中该类的构造器完成的,构造器就是一个方法,本质是函数,所以需要调用该构造器完成对象初始化。凡是调用方法,就都会开辟一个栈空间,调用完毕后,销毁该栈空间。当完成初始化后,就把堆内存中的对象首地址返回给该引用变量。

Java学习之创建对象内存使用机制的更多相关文章

  1. 深入理解Java虚拟机(自动内存管理机制)

    文章首发于公众号:BaronTalk 书籍真的是常读常新,古人说「书读百遍其义自见」还是很有道理的.周志明老师的这本<深入理解 Java 虚拟机>我细读了不下三遍,每一次阅读都有新的收获, ...

  2. 【深入理解Java虚拟机】自动内存管理机制——垃圾回收机制

      Java与C++之间有一堵有内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来.C/C++程序员既拥有每一个对象的所有权,同时也担负着每一个对象生 ...

  3. 【深入理解Java虚拟机】自动内存管理机制——内存区域划分

      Java与C++之间有一堵有内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来.C/C++程序员既拥有每一个对象的所有权,同时也担负着每一个对象生 ...

  4. memcached学习——memcached的内存分配机制Slab Allocation、内存使用机制LRU、常用监控记录(四)

    内存分配机制Slab Allocation 本文参考博客:https://my.oschina.net/bieber/blog/505458 Memcached的内存分配是以slabs为单位的,会根据 ...

  5. java学习之路----内存的分析

    java内存分析           在java中,java语言对程序员做了一个美好的承诺,就是程序员无需去管理内存,因为有GC,其实不然;                      1.垃圾回收并不 ...

  6. Java中对象的内存分配机制

    一.内存划分 Java把内存划分为两种,一种是栈内存,另一种是堆内存. 1.栈内存 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配.当在一段代码块定义一个变量时,Java就在栈 ...

  7. Java学习 (九)基础篇 包机制&JavaDoc

    包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间 包语句的语法为: package pkg[.pkg2[.pkg3...]]; 一般利用公司域名倒置作为包名:com.feng.x ...

  8. java学习第五天异常机制.day14

    异常处理机制 确保程序的正常执行.这种机制称为异常处理机制 异常对象 常用方法 方法介绍 toString 返回异常类型和异常信息 getMessage 返回异常信息 printStackTrace ...

  9. Java面向对象05——创建对象内存分析

随机推荐

  1. Ruby 安装 – Windows

    Ruby 安装 – Windows 下面列出了在 Windows 机器上安装 Ruby 的步骤. 注意:在安装时,您可能有不同的可用版本. - Window 系统下,我们可以使用 RubyInstal ...

  2. 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)

    单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 说实话很不想写这篇文章,因为这和我一贯推崇的最好全部编译并使用w ...

  3. bzoj1006题解

    [题意分析] 给你一张弦图,求图的最小染色数. [解题思路] 这篇讲稿已经讲得很详尽了.. 直接求完美消除序列,然后倒着染色即可.复杂度O(n2+nm). [参考程序] 求完美消除序列我是用的MCS( ...

  4. BZOJ 2225: [Spoj 2371]Another Longest Increasing (CDQ分治+dp)

    题面 Description 给定N个数对(xi, yi),求最长上升子序列的长度.上升序列定义为{(xi, yi)}满足对i<j有xi<xj且yi<yj. Input Output ...

  5. NX二次开发-UFUN编辑图层类别描述UF_LAYER_edit_category_descr

    1 NX11+VS2013 2 3 #include <uf.h> 4 #include <uf_layer.h> 5 6 7 UF_initialize(); 8 9 //创 ...

  6. NX二次开发-清除信息窗口中的内容,退出信息窗口UF_UI_exit_listing_window

    #include <uf.h> #include <uf_ui.h> UF_initialize(); //打开信息窗口 UF_UI_open_listing_window() ...

  7. 牛客多校第九场 E All men are brothers 并查集/组合论

    题意: 一开始有n人互不认识,每回合有两个人认识,认识具有传递性,也就是相互认识的人组成小团体.现在问你每个回合,挑选四个人,这四个人互不认识,有多少种挑选方法. 题解: 认识不认识用并查集维护即可, ...

  8. javascript和jQuery知识点总结

    attribute: $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式 $(”img”).attr({src:”test.jpg”,alt:”test Image”}); ...

  9. 往github上上传项目

    点击start a project 新建 下面部分传送http://blog.csdn.net/s740556472/article/details/55000019 如图: 这里我们有一个步骤需要做 ...

  10. 纯css写带小三角对话框

    在实际样式中经常会遇到要写类似对话框的样式,而这种样式往往会有一个小三角,如下所示: 那么如何用css写出来呢,其实很简单,先让父元素相对定位,然后运用css的伪类before或after.就可以写个 ...