猿问

内存分配和语言有关么,不同语言写的(基本上一样的代码)在内存分配上是一样的么(似乎不是一个好问题啊)

最近突然对内存分配,还有代码如何在电脑里运行这块非常感兴趣,就想到这个问题,有点不太会表达,我所看到的那个学习视频是以c语言为例讲解代码运行时计算机的各种状态和内存分配,我想知道如果是java是不是一样照此理解,(应该是和语言是没有关系的吧),语文不好请多多见谅。

冯宝宝
浏览 1241回答 1
1回答

onemoo

可以说,你所思考的这些确实和语言没有关系。内存分配啊、代码如何运行啊...这些是硬件和操作系统层面的事。关于“java是不是一样照此理解”中的“理解”二字,我觉得要从两个方面说:在语言层面:有些语言偏向底层,比如 C/C++,在这种语言中就会比较强调内存方面的概念,比如内存分配啊、内存布局啊...   所以讲解内存方面的课程就比较适合用 C 语言。而有些语言就不强调这些。比如 Java 是比较纯粹的面向对象风格的语言。在 Java 的世界里存在的都是“对象”,在语言概念层面上完全没有内存这东西。你看它和 C 相比根本就没有“指针”类型。这些区别其实是不同编程语言设计上的不同。每种语言都有自己的风格、概念、和内在哲学。学习一种语言最重要的就是理解它的设计哲学,学会以这种语言的方式去思考。比如:初学 Java 时只要知道要 new 一个对象出来就可以用它了,忘记内存的事吧。 而写 C 代码时则要时刻记着内存,不然就容易出错。在实现层面:当然不管是 C 还是 Java 程序最终都运行在硬件和操作系统之上,所以它们执行时操作硬件的方式都是大同小异的。  我想你也能够推测出,Java 中 new 出来的对象就是在堆中分配的内存之中。没错,是这样的。  而从这个层面对 Java 进行理解,我认为算是对 Java 的进阶学习,也就是开始探究 JVM——Java 底层的虚拟机是如何运行的。  但我认为这一步应该在能够熟练使用 Java 之后再进行。
随时随地看视频慕课网APP
我要回答