这些“公有成员变量”内存消耗大吗?解决方案

这些“公有成员变量”内存消耗大吗?
一个类:       
 //数据库文件目录
        string strDataBase = "";
        //数据库连接字符串
        string connStr = "";
        
        
        InterfaceInfo[] NetGateInterfaceInfo;//网关机接口类对象数组
        DeviceInfo[] NetGateDeviceInfo;//网关机设备类对象数组
        MeterInfo[] NetGateMeterInfo;//网关机表具类对象数组

        List<CommInterface> Comm = new List<CommInterface>();//接口设备对象集合
        List<IDevice> DeviceList = new List<IDevice>();//设备对象集合
        List<ITask> TaskList = new List<ITask>();//任务管理对象集合
        List<string> SqlList = new List<string>();//SQL字符串对象集合
        List<ListViewItem> CodeList = new List<ListViewItem>();//通信代码对象集合

        List<MeterData> MeterRead = new List<MeterData>();//表具对象集合

        private DateTime CollectDate = Convert.ToDateTime("1999-12-31 00:00:00");//采集时间

        Thread threadTask = null;//任务线程



另一个类:
private List<IDevice> DeviceList = new List<IDevice>();//定义设备集合
        private ICommDevice commDev = null;//定义Comm接口
        private InterfaceInfo interfaceInfo = null;//定义设备接口实体类

        private Thread threadComm = null;//定义串口线程
        private CommFlag commFlag = CommFlag.Idle;//设置端口状态
        public delegate void CommMsg(CommInterface ci, string strMsg);//定义委托,并指定被代理方法的参数
        public CommMsg CommMessage = null;//定义委托变量,用于代理时间或方法



第三个类:
 SerialPort spComm = new SerialPort();//初始化串口类
        EN_COMM_STATE enState = EN_COMM_STATE.Closed;//设置串口状态
        List<byte> bufReceive = new List<byte>();//接受到的字节数组
        private InterfaceInfo commInterface;//实体设备对象


问题:
         这些成员变量,消耗的是程序内存,还是存储内存???
         资源消耗有多大???

------解决方案--------------------
程序内存,还是存储内存???

这是什么问题!!???
------解决方案--------------------
奇葩问题
程序内存难道不是在电脑内存条中,而是另外有内存??
------解决方案--------------------
等程序写出来 测试一下就知道了
------解决方案--------------------
1.占用内存大不大很大程度上取决于这些变量保存的数据;
2.一个程序运行起来后都会分配一段内存给程序,这些变量就存在这段内存里。
------解决方案--------------------
程序内存、存储内存不知道你说的是什么和什么。
如果你想说,对于冯诺依曼,或者说普林斯顿架构的计算机(我们的PC就是属于这个架构),程序的指令和数据混编在相同的内存地址中,那么显然,所有的数据,都不可能存在“程序内存”中。否则数据被当作代码执行,那么这是很严重的安全漏洞。
------解决方案--------------------
这些变量你都没有加Static修饰符 还好啦
如果你需要用到这些属性 声明和使用占用内存是必须 只是做好使用后的回收 例如Static的集合用完后要及时Remove
------解决方案--------------------
看起来很多都是数组,取决于放多少个item进去。

至于内存种类
堆栈(stack):值类型变量,引用类型变量的引用本身。
堆(heap):引用类型变量,包括数组 etc. 估计你说的存储内存指得是这个


------解决方案--------------------
1.这些消耗的都是机器的内存条.
2.变量消耗内存不取决于类型和访问修饰符. 而取决于你往这个变量里塞了多少东西.  1个int[] 如果塞1000万个元素怎么都会比1个List<int> 里的3个元素大N倍.
 
------解决方案--------------------
引用:
奇葩问题
程序内存难道不是在电脑内存条中,而是另外有内存??

所有的用户程序都是加载并运行在主存储器(内存)中的,断电就消失。而文件是永久保存在外储存器(磁盘等)上的。
这些“公有成员变量”内存消耗大吗?解决方案
主存的分布,一般如上图所示(当然分区大小有差别),通常包括:系统区、服务区、静态代码区、动态区。OS会给每个用户程序分配一段用户程序空间(通常是在动态堆栈区上划出一块),在用户空间内,又分静态区(存储程序代码,还有static全局变量,大小不变)和动态堆栈区(存储变量值,弹性伸缩)。所有的程序代码(指令)是不变的,一般都是存放在静态代码区。而变量是存放在堆栈区的。

回归主题,占用内存的大小,还是要看这些变量的值,还有运行时需要的最大存储空间。
------解决方案--------------------
这个starrytong系列账号,发了一堆贴子,然后自问自答,明显是准备倒分了

斑竹看住他,若是给自己分,就封了他