Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,动态分配_Java_C_Compilation_Jvm - Fatal编程技术网

在java中,动态分配

在java中,动态分配,java,c,compilation,jvm,Java,C,Compilation,Jvm,在C语言中,编译器在编译期间分配内存,而在Java中,JVM在运行时分配内存。因此,当C编译器在编译后分配内存时,ram会被清除,但运行时数据是如何存储的?这里有几个错误的概念: 因此,当编译器在编译后分配内存时,ram被清除 编译器不为程序分配内存;程序启动时分配内存。基本上,编译器只是告诉JVM在运行时如何为所述程序分配内存 那么在运行时如何存储数据 数据存储在JVM解释器中,而JVM解释器本身就是一个程序。它有一个存储由程序而不是编译器分配的内存数据的位置。编译器不能分配内存-当然不能。这

在C语言中,编译器在编译期间分配内存,而在Java中,JVM在运行时分配内存。因此,当C编译器在编译后分配内存时,ram会被清除,但运行时数据是如何存储的?

这里有几个错误的概念:

因此,当编译器在编译后分配内存时,ram被清除

编译器不为程序分配内存;程序启动时分配内存。基本上,编译器只是告诉JVM在运行时如何为所述程序分配内存

那么在运行时如何存储数据


数据存储在JVM解释器中,而JVM解释器本身就是一个程序。它有一个存储由程序而不是编译器分配的内存数据的位置。

编译器不能分配内存-当然不能。这取决于运行时环境。首先,没有任何东西可以保证编译代码的机器就是实际运行代码的机器

在这方面,C和Java之间的主要区别在于C需要管理内存{de,}分配;Java没有这样的问题,尽管它确实有一些缺点。要知道,除其他外,Java中的释放是自动的,尽管不在您的控制之下

基本上,在C语言中,如果你不能malloc,你会得到一个NULL,因此你只需要检查它并采取相应的行动;在Java中,您会遇到一个很难恢复的OutOfMemoryError

这是两种截然不同的方法,为了便于使用,无论好坏,现在越来越多的语言采用Java方式而不是C方式


但无论如何,这与编译器无关。

编译器编译代码。在运行时,内存要么在堆栈上,要么在自由存储区上,这取决于您自己编写的答案,JVM处理这些事情。。。在C编译器中,它为您分配内存。你怎么会有这个想法?!提示:退一步,多读一点这些概念。也许,质疑你目前所依赖的信息来源。谁告诉你编译器分配内存的?