为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

可以说,你所思考的这些确实和语言没有关系。

内存分配啊、代码如何运行啊...这些是硬件和操作系统层面的事。


关于“java是不是一样照此理解”中的“理解”二字,我觉得要从两个方面说:

在语言层面:

有些语言偏向底层,比如 C/C++,在这种语言中就会比较强调内存方面的概念,比如内存分配啊、内存布局啊...   所以讲解内存方面的课程就比较适合用 C 语言。

而有些语言就不强调这些。比如 Java 是比较纯粹的面向对象风格的语言。在 Java 的世界里存在的都是“对象”,在语言概念层面上完全没有内存这东西。你看它和 C 相比根本就没有“指针”类型。

这些区别其实是不同编程语言设计上的不同。每种语言都有自己的风格、概念、和内在哲学。

学习一种语言最重要的就是理解它的设计哲学,学会以这种语言的方式去思考。比如:初学 Java 时只要知道要 new 一个对象出来就可以用它了,忘记内存的事吧。 而写 C 代码时则要时刻记着内存,不然就容易出错。


在实现层面:

当然不管是 C 还是 Java 程序最终都运行在硬件和操作系统之上,所以它们执行时操作硬件的方式都是大同小异的。  我想你也能够推测出,Java 中 new 出来的对象就是在堆中分配的内存之中。没错,是这样的。  而从这个层面对 Java 进行理解,我认为算是对 Java 的进阶学习,也就是开始探究 JVM——Java 底层的虚拟机是如何运行的。  但我认为这一步应该在能够熟练使用 Java 之后再进行。

查看完整回答
反对 回复 2017-10-10
  • 冯宝宝
    冯宝宝
    喔,嗯,不觉明厉,只是突然很感兴趣,
  • onemoo
    onemoo
    这很好,这表示你很有求知欲。记住这份好奇,以此为动力来继续学习下去吧。
  • 1 回答
  • 1 关注
  • 1194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信