程序运行过程的内存分析。

  栈:自动分配连续的空间,后进先出。用于存放局部变量

    Example:s1(局部变量。new出来以后放到堆里保存)

          s1中存放一个地址,指向堆中保存的对象,对象中的各种属性也各自存放一个地址,指向堆内方法区中所保存的代码、static变量以及常量池等。图例如下

  堆:空间不连续。用于放置new出的对象

    方法区:存放类的信息(代码)、static变量、常量池(字符串常量)等。

      Example:student类信息:1、代码(属性、方法)。2、static变量。3、常量池(字符串常量……等)

    

时间: 2024-10-11 20:23:18

程序运行过程的内存分析。的相关文章

面向对象编程(三)——程序执行过程中内存分析

阅读目录 内存分析(SxtStu.java)对于java 和内存之间的注意事项 内存分析(SxtStu.java) Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性.所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提.  一个完整的Java程序运行过程会涉及以下内存区域: 寄存器: JVM内部虚拟寄存器,存取速度非常快,程序不可控制. 栈: 保存局部变量

032_面向对象_05_程序执行过程的内存分析_02

一.实例代码 package edu.aeon.test; /** * [说明]计算机类 * @author aeon */ public class Computer { /**计算机品牌*/ public String brand; /**计算机cpu速度*/ public int cpuSpeed; } package edu.aeon.test; /** * [说明]学生类 * @author aeon * 类包括静态的属性和动态行为 */ public class Student {

程序执行过程的内存分析

1 当类第一次加载时,会将类的信息加载到堆中,以后就直接调用. 加载到堆中的类信息包含如下: (1)   成员属性 (2)   类中定义的方法 (3)   Static变量 (4)   常量 2  Java中除8种基本数据类型外,其他的变量类型都称之为引用类型

Java内存管理-程序运行过程(一)

勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 相信在做Java开发的伙伴一定知道 JVM(Java Virtual Machine(Java虚拟机)!本系列会开启对JVM相关的知识的探索和总结,让我们一起踏入JVM的学习之旅中,去了解和发现更加精彩的Java世界! 正如奥古斯特·罗丹 说过:世界上不是缺少美,而是缺少发现美的眼睛.Java的世界也是如此! 本文地图: 1.什么是程序 在计算机领域当中,程序就是为了能够让计算机执行

2.C语言------程序运行为什么需要内存2

C语言------程序运行为什么需要内存(二) 1.代码就是函数.C语言中全局变量和局部变量就是数据. 2.在运行应用程序时,所有应用程序的代码和数据都在DRAM中就是冯诺依曼结构. 3.在单片机中将程序烧写到Flash(NorFlash)中,然后程序在Flash中运行.如果程序运行过程中不需要处理数据,那么这个这个程序也就不需要内存.程序中涉及到的数据(全局变量或局部变量)不能再Flash中必须放到RAM(SRAM:内存)中.CPU从Flash中读取程序并运行该程序,Flash中的程序只会被读

在程序运行过程中,对象所占的空间是不能随时释放的

使用类名定义的对象(请查看:C++类的声明和对象的定义)都是静态的,在程序运行过程中,对象所占的空间是不能随时释放的.但有时人们希望在需要用到对象时才建立对象,在不需要用该对象时就撤销它,释放它所占的内存空间以供别的数据使用.这样可提高内存空间的利用率. 在C++中,可以使用new运算符动态地分配内存,用delete运算符释放这些内存空间(请查看:C++动态分配内存(new)和撤销内存(delete)).这也适用于对象,可以用new运算符动态建立对象,用delete运算符撤销对象. 如果已经定义

Windows程序运行过程

Windows应用程序: WinMain函数(入口函数): 1.设计窗口类,注册窗口类:WNDCLASS 2.创建窗口,显示及更新窗口: 3.消息循环: 窗口过程函数(回调函数):WindowProc PS:Dos程序入口函数为main,Windows程序入口为WinMain,都是由系统直接调用. windows程序运行过程 #include<windows.h> #include<stdio.h> LRESULT CALLBACK WinSunProc( //窗口过程函数(回调函

opencv检错:程序运行过程正常,当跳出函数时出现断言错误(Debug Assertion Failed)

转载http://blog.csdn.net/u012327581/article/details/51351780 1.问题描述 在VS2015下配置好Opencv后,程序在函数运行过程中正常,调试时发现,当运行至跳出函数时,出现断言错误. 2.原因分析 单步跟踪调试发现,在函数结束时会进行vector的析构,出现了析构错误.并且,如果vector在定义完成之后,进行resize或reserve操作,将vector空间做大,问题消失.后来查阅资料,结合亲身测试,发现是在调用Opencv 库时,

Windows窗口程序运行过程

现在,简单介绍下windows应用程序的大概运行过程,让刚开始接触Windows开发或者MFC开发的同学有一个大致的了解. 1.创建一个窗口首先要注册一个窗口类,初始化wndclass中的各个域,设置窗口过程函数. 2.调用RigisterClass来注册这个窗口类. 3.创建窗口.CreateWindow 4.显示窗口.ShowWindow 5.刷新窗口.UpdateWindow 5.消息循环. 这里主要讲解消息循环. 消息循环中的循环是由程序中 while(GetMessage(&msg,N