




已阅读5页,还剩133页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序运行内存分析 硬件平台 操作系统平台Linux Unix Win JVM 代码 class java字节码 是jvm的二进制 javac java java intm 10 11 Inte 10 m Inte m m m m 1 intx 10 11 x x 1 11 Inty x Inty x 11 运算器 寄存器 控制器 m 10 栈内存 10 2 e 12 e 1 m m 10 e 11 预算完以后 都会消失 m 10 11 m 两者的就是 运算先区别后顺序 运算符优先级 m 10 1 m e 栈内存 X 1 0 Y 2 0 O xx R 2 0 1 C1 xx X 0 0 Y 0 0 O xx re 5 0 C2 xx C1 1 0 1 0 2 0 stack heap P1 zz X 5 0 y 6 0 P zz 2 test xx Date 9 Day 1 Year 1000 Month 1 D1 xxxx Day 22 Month 2 Year 2000 D2 yyyy stack heap 3 stack heap P1 xxxx Z 3 0 Y 2 0 X 5 0 P2 yyyy Z 0 0 Y 0 0 X 0 0 14 0 X 1 0 Z 1 0 Y 1 0 P zzzz 21 Id 101 Name zzz heap extends this this super heap casting this this super dog xxxx polyphric stack heap C xx L1 yy heap Name l1 Color blue Name cat This xx This yy Animal pet xx This zz polyphric stack heap C xx L1 yy heap Name l1 Color blue Name cat Animal pet xx This zz polyphric stack heap C xx L1 yy heap Name l1 Color blue Name cat Animal pet xx This zz heap polyphic stack C 11 L1 22 heap Name cat Color blue Animal enjoy Cat enjoy Dog enjoy This 11 this 33 This 22 Enjoy heap interface stack Inf 1 p1 xx Inf 2 p2 yy This 11 Inf 3 Inf 2 Inf 1 Inf 3 p3 zz main Array stack heap S heap Days Array stack heap days len 5 i 4 J 3 j 1 4 Tmp a 3 Array stack heap days heap heap String stack hello s1 s3 s4 s5 heap String stack hello s1 s2 S1 s2 Date Java util Date java text SimpleDateFormat java text DateFormat java sql Time java sql Date java sql Timestamp java util Canlendar java util GregorianCalendar java util Timezone heap 程序运行完整原理 stack Main yyy zzz ClassLoader A Newyyy A method yyy method 成员变量 yyy a 100 heap ClassLoader体系原理 stack Main yyy zzz ClassLoader A Newyyy A method yyy method 成员变量 yyy a 100 ExtClassLoaderParent xxxThis yyyy ClassLoaderthis xxx appClassLoaderParent yyyyThis zzz ClassLoaderParent zzz heap 动态代理原理 stack Main move ClassLoader RT SHUTDOWN java heap 动态代理原理 stack Main ClassLoader RT SHUTDOWN java Tank class ProxyH java ProxyH class heap ClassLoader体系原理 Stack栈内存 ClassLoader Addr xxx heap堆内存 Client OS Method 10 Main M 1 M 2 M 3 Main i 100 M 1 System out print M 1 M 2 System out print M 3System out print M 2 M 3 System out print System out print Main 15 Return4 reM 3 Return5 reM 4 reM 5 reM 4 Return2 reM 1 reM 3 reM 1 Return3 reM 2 reM 2 Return1 1 3 3 6 4 6 5 10 reM 1 2 1 3 Intn 5 IntrreturnValue reM 5 System out print Rv heap Stack栈内存 ClassLoader heap堆内存 Static修饰的变量 常量 字面量 方法内部的数据 对象里面的动态数据 字符串常量池 128 127整型常量池 硬件平台 操作系统平台Linux Unix Win JVM 代码 class javac ClassLoader RT SHUTDOWN java OOP 01 class Main Student class StaticSCNameage Study doGame 我是方法 SCName Null Student class 先不说 Student OOP06 class Animal class Main An NewAnimal 9 M01 an System out print Met inti i System out print i Animal inti 123456 Animal int age Age age Intage 9 10 IntageAnimal m01 Animala a age Animal inti 456789 Intage 9 10 Method 10 Main Met Main i 10 Met 10 System out print Met inti i System out print i OOP06 class This 链表 Main An NewAnimal 9 M01 an System out print Met inti i System out print i Animal inti 123456 Animal int age Age age Intage 9 10 IntageAnimal m01 Animala a age dc374856 User 15db9741 Animal inti 15db9742 IntI 0 This00 class This Increment Print 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 内存流程图 难点 对步骤的坚持 咱们老想省略几步 一省略忘了 就堵死 画的很随便 随意几笔 该加的不加 内容随意省略就是一个 懒 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 静态数据 对象运算过程中 不改变 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 shutdown Method 10 Main Met Main i 10 Met 10 System out print Fis Native Met inti i System out print i Method 10 Main Met Main Fis Fis i System out print i Met inti i System out print i Met inti i System out print i OOP06 class This 链表 Main Animala 数组 IntageAnimal dog cat dog cat 这也是硬盘和内存保存主数据的方式 Arr n n 3个属性 栈底元素栈顶元素栈空间容纳个数2个方法 压栈弹栈 0 xxxx 1 xxxx 3 xxxx 2 xxxx 4 xxxx 0 xxxx 1 xxxx 3 xxxx 2 xxxx 4 xxxx 0 xxxx 1 xxxx 3 xxxx 2 xxxx 4 xxxx heap Stack栈内存 ClassLoader heap堆内存 Static修饰的变量 常量 字面量 对象里面的动态数据 0 xxxx 1 xxxx 3 xxxx 2 xxxx 4 xxxx 链表递归添加尾节点示意图 Search root 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 shutdown java class class Native 用别的语言写的和操纵系统紧密绑定类 classloader 字节码校验器 0 xxxx 1 xxxx 3 xxxx 2 xxxx 4 xxxx heap堆内存 Run Run Run Run 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 shutdown 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 shutdown 硬盘 运算 编码 Javac编译 实例化 运行 加载jvm Java调用运行 shutdown heap堆内存 Run m1 m2 m3 for For run heap堆内存 Run m1 m2 m3 for For run heap堆内存 t1 Accountact Process Account T1 Thread Process Account T2 Thread t2 Accountact withDraw 1000 Act Withdraw 3000 1000 Run Act Withdraw withDraw 1000 Act Withdraw 3000 1000 cpu1 cpu2 cpu3 cpu4 Print Print setBalance setBalance heap堆内存 MyClass StaticM1 StaticM2 MyClass StaticM1 StaticM2 Run mc m1mc m2 cpu1 cpu2 cpu3 cpu4 T1 m1 T2 m2 m1 Sp m2 Sleep 5000 Sp heap堆内存 MyClass M1 M2 MyClass M1 M2 Run mc m1mc m2 cpu1 cpu2 cpu3 cpu4 T1 m1 T2 m2 m1 Sp m2 Sleep 5000 Sp 静态方法不该写在这里 heap堆内存 o2 o1 Run cpu1 cpu2 cpu3 cpu4 T1 T2 m1 Sp m2 Sleep 5000 Sp heap堆内存 num printOdd printEven Run cpu cpu2 cpu3 cpu4 T1 T2 static1 heap堆内存 num printOdd printEven Run static1 static2 Static2 cpu4 T1 T2 static1 heap堆内存 synStack Cnt Char 6 charpush pop Run Ss pop cpu1 cpu2 cpu3 cpu4 T1 T2 Push a Ipush heap堆内存 tf Cnt Char 6 charpush pop cpu1 cpu2 cpu3 cpu4 chastServer Cnt Char 6 charpush pop Stack栈内存 Main M 3 M 1 M 2 method shutdown 2 1 3 2 1 4 3 2 1 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 Inti 10 Doubled 20 0 this xxxxx 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 函数调用必须开辟栈帧 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 函数调用必须开辟栈帧 This xxxxx Inti 10 100Inti2 20 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 函数调用必须开辟栈帧 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 函数调用必须开辟栈帧 堆内存 栈内存 静态代码 静态数据 1调用类的构造方法2在堆内存中开辟内存空间3把对应的类复制到堆内存中刚开辟的内存中4赋值 把开辟的内存空间的地址赋值给我们栈内存中的那个变量 函数调用必须开辟栈帧 FinalintI 100 FinalintI 100 javac A java A class java B java B class C class Jvm java虚拟机 d eat p feed d Sp d eat d eat p feed d Sp d eat Anl a xxxx Main HashTable 废弃 HashSet HashMap 0 3 4 2 1 索引数组 在内存空间上是连续的记数也是连续的 总体就是有序的 火车票有座 关联数组 在内存空间上是连续的 记数也不是连续的 就是无序的 火车票没座 哈希表 用hashCode 函数进行编码的作为下标的索引数组 我们用的hashCode 函数可能会有重复的情况 但是数组又规定不能重复 我们再用equals 比较另外一个外属性 必须包含两个比较 一个比较hashCode 另外一个比较另外一个属性 hashSet 只保存了一个元素hashMap 每个车厢没座的人的特点进行编号 用这个编号作为每个人的下标 身份证 身高 在哪儿下车 2987982 2987982 公共重复池 索引数组 在内存空间上是连续的记数也是连续的 总体就是有序的 火车票有座 关联数组 在内存空间上是连续的 记数也不是连续的 就是无序的 火车票没座 哈希表 用hashCode 函数进行编码的作为下标的关联数组 我们用的hashCode 函数可能会有重复的情况 但是数组又规定不能重复 我们再用equals 比较另外一个外属性 必须包含两个比较 一个比较hashCode 另外一个比较另外一个属性 hashSet 只保存了一个元素 hashMap 是一个元素里面保存两个对象的映射关系 再把这个映射关系封装成一个对象每个车厢没座的人的特点进行编号 用这个编号作为每个人的下标 身份证 身高 在哪儿下车 酒吧里面 会员男进入 同去女伴免费 公共重复池 P1 product name price 8 0 对象 集合 类Add Delete Search Print 对象 集合 类 root 数据源 运行程序 输出目的 运行程序数据源 线程面试题 数据 方法 ServerSocketSocketInputStreamDataInputStreamDataOutputStreamOutputStream 10000 intI 11 10 1 11 inta 5 a a 2 寄存器 栈内存 intm 11 m 10 11 寄存器 inte 10 inte m m m 1 intx 11 x x 11 寄存器 inty 11 Y x x x x 1 硬盘 heap堆内存 静态代码段 静态数据区 Jvmshutdown 硬盘 heap堆内存 静态代码段 静态数据区 Jvmshutdown 1 2 1 3 2 1 4 3 2 1 5 4 3 2 1 硬盘 heap堆内存 静态代码段 静态数据区 OOP 03 java Customer java javac OOP 03 class Customer class java star class Jvmshutdown 10 寄存器 Y x x x x 1 栈内存 10 1 11 这是值传递 就是值复制对源内存中的数据没有影响 heap堆内存 静态代码段 静态数据区 创建某个类的对象的步骤Aa newA 1调用构造方法2在堆内存里面开辟内存空间3复制 把静态代码段中的代码复制到堆内存的对象中4赋值把堆内存中新创建的对象的内存地址赋值给栈内存中的变量 heap堆内存 静态代码段 静态数据区 创建某个类的对象的步骤Aa newA 1调用构造方法2在堆内存里面开辟内存空间3复制 把静态代码段中的代码复制到堆内存的对象中4赋值把堆内存中新创建的对象的内存地址赋值给栈内存中的变量 heap堆内存 静态代码段 静态数据区 heap堆内存 静态代码段 静态数据区 创建某个类的对象的步骤Aa newA 1调用构造方法2在堆内存里面开辟内存空间3复制 把静态代码段中的代码复制到堆内存的对象中4赋值把堆内存中新创建的对象的内存地址赋值给栈内存中的变量 Color heap堆内存 静态代码段 静态数据区 创建某个类的对象的步骤Aa newA 1调用构造方法2在堆内存里面开辟内存空间3复制 把静态代码段中的代码复制到堆内存的对象中4赋值把堆内存中新创建的对象的内存地址赋值给栈内存中的变量 Color heap堆内存 静态代码段 静态数据区 Color heap堆内存 静态代码段 静态数据区 Color heap堆内存 静态代码段 静态数据区 Color heap堆内存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学写游记教学课件
- 分布式能源系统中生物质能源的生物质能发电设备市场应用策略报告2025
- 农作物种子管理工作存在的问题与优化措施
- 学习通课件到WPS的转换
- 学习注会app课件
- 不良资产处置行业市场潜力分析:2025年创新模式深度解读报告
- 2025年经济开发区行业当前发展现状及增长策略研究报告
- 个人养老金制度调整对新材料产业投资市场的机遇与挑战研究报告
- 2025年工业互联网行业当前竞争格局与未来发展趋势分析报告
- 学习安全知识培训总结课件
- 色素性皮肤病课件
- 《医用化学基础》教案
- GB/T 9969-2008工业产品使用说明书总则
- GB/T 3618-2006铝及铝合金花纹板
- GB 31645-2018食品安全国家标准胶原蛋白肽
- 防山体滑坡应急预案
- 江苏省社会组织网上办事系统-操作手册
- DB37-T 3079-2017特种设备事故隐患排查治理体系细则
- 2023版江西省乡镇卫生院街道社区卫生服务中心地址医疗机构名单(1744家)
- 各种隔离标识
- 钢质防火门窗项目商业计划书范文参考
评论
0/150
提交评论