在java中,动态分配
在C语言中,编译器在编译期间分配内存,而在Java中,JVM在运行时分配内存。因此,当C编译器在编译后分配内存时,ram会被清除,但运行时数据是如何存储的?这里有几个错误的概念: 因此,当编译器在编译后分配内存时,ram被清除 编译器不为程序分配内存;程序启动时分配内存。基本上,编译器只是告诉JVM在运行时如何为所述程序分配内存 那么在运行时如何存储数据在java中,动态分配,java,c,compilation,jvm,Java,C,Compilation,Jvm,在C语言中,编译器在编译期间分配内存,而在Java中,JVM在运行时分配内存。因此,当C编译器在编译后分配内存时,ram会被清除,但运行时数据是如何存储的?这里有几个错误的概念: 因此,当编译器在编译后分配内存时,ram被清除 编译器不为程序分配内存;程序启动时分配内存。基本上,编译器只是告诉JVM在运行时如何为所述程序分配内存 那么在运行时如何存储数据 数据存储在JVM解释器中,而JVM解释器本身就是一个程序。它有一个存储由程序而不是编译器分配的内存数据的位置。编译器不能分配内存-当然不能。这
数据存储在JVM解释器中,而JVM解释器本身就是一个程序。它有一个存储由程序而不是编译器分配的内存数据的位置。编译器不能分配内存-当然不能。这取决于运行时环境。首先,没有任何东西可以保证编译代码的机器就是实际运行代码的机器 在这方面,C和Java之间的主要区别在于C需要管理内存{de,}分配;Java没有这样的问题,尽管它确实有一些缺点。要知道,除其他外,Java中的释放是自动的,尽管不在您的控制之下 基本上,在C语言中,如果你不能malloc,你会得到一个NULL,因此你只需要检查它并采取相应的行动;在Java中,您会遇到一个很难恢复的OutOfMemoryError 这是两种截然不同的方法,为了便于使用,无论好坏,现在越来越多的语言采用Java方式而不是C方式
但无论如何,这与编译器无关。编译器编译代码。在运行时,内存要么在堆栈上,要么在自由存储区上,这取决于您自己编写的答案,JVM处理这些事情。。。在C编译器中,它为您分配内存。你怎么会有这个想法?!提示:退一步,多读一点这些概念。也许,质疑你目前所依赖的信息来源。谁告诉你编译器分配内存的?