问题描述
所谓"类不占用内存空间,其生成的对象才占用内存空间"主要指编译层面的说法还是运行层面的说法?意思是这个内存是以产生代码得其说还是以代码调到内存运行时得其说?多谢赐教!
解决方案
解决方案二:
运行层面
解决方案三:
类规定了所占内存空间的大小(除了静态类,静态类一运行本身就分配了内存空间)具体实例化时才会分配内存空间,当然是运行层面的说法。编译只是语法纠正,连接之类的东西
解决方案四:
楼上正解
解决方案五:
C#/VB.net/JS.net/..-->IL这个是由语言编译器完成的IL-->机器代码这个编译动作是在一次运行.net程序时由JIT编译器完成的所以你的类还是会占用内存空间的,包括类型的元数据,静态字段等但是说到内存空间占用那一定是在运行时了
解决方案六:
问题是大家看看我下面的说法是不是也有点道理:确实如果说是编译层面的,那么就不存在占用内存的说法,毕竟程序不投入运行就不会发生内存的占用情况.问题是如果说是运行层面的,那么"类不占用内存"的说法不就多余了么?因为大家都知道类是语言层面的概念,源程序编译后类就不存在了,此时说运行中的程序"类不占用内存"不就无中生有吗?我还真有点晕...敬请各位多多帮忙指教指教!谢谢!
解决方案七:
"类不占用内存空间,其生成的对象才占用内存空间"这个说法本身就不严谨,也没啥意义
解决方案八:
所以我认为这句话应该是一种带预见性的说法,占用不占用内存是指编译后是不是生成实际的代码,而无所谓编译层面和运行层面的问题,对象是生成了实际代码所以可以预见它运行后必是占用内存的,类编译后不存在了因此可以预见它肯定是不占用的:-)哈!
时间: 2024-08-02 03:00:20