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

Java程序不是在内存中运行的吗?

Java程序不是在内存中运行的吗?

qq_阳光下的海风_0 2016-09-22 11:05:36
 public static void write(){ String text="abcdefg";   ByteArrayInputStream bais=new ByteArrayInputStream(text.getBytes());          int n=bais.read();          while(n!=-1){           System.out.print((char)n);           n=bais.read();          }          try {           if(bais!=null){ bais.close();           } } catch (IOException e) { e.printStackTrace(); }    }我的疑惑如下:     整个Java代码不都是在内存中运行的吗?那个整个Java程序不就是内存的一部分?为什么还会有内存流(用来传递程序和内存之间的数据)这一说?       请大神解释一下,在此谢过啦!     注:和什么堆内存、栈内存等没有关系,真的是不理解内存与程序的关系。
查看完整描述

1 回答

?
阿旭_

TA贡献217条经验 获得超353个赞

内存(数据断电消失:内存条、cpucatch……),外存(数据断电不消失:外存器、U盘、硬盘、光盘)

显示器要显示内容,通常需要先把展示的数据从外存(比如硬盘)读到内存中去,仅仅读是不够的,还要有一定的逻辑去计算显示的数据,负责计算的是cpu。

简言之,玩游戏也好、打开eclipse也好,只要是运行的,都只能在内存中运行(断电就消失了)。所以在打开Eclipse编写代码的时候建议要经常Ctrl+S(保存正在编写的代码到磁盘/硬盘中去)。这样电脑突然断电了,再打开ecipse也能看到相应编辑的文件。

==============

一个应用程序通常称做一个进程,进程也是在内存中的,内存要拿外存(磁盘的数据时)这个过程称做 内存与外存的交互。在java里叫做IO文件流读写操作。


IO流读写(内存流读:比如向D盘中打开一个名为abc.txt的文件,并将内容读到内存中去)、IO流写(内存流写:比如向硬盘D盘保存一个名为abc.txt的文件,并在这个文件中写数据"哈哈哈哈"并保存)。

整个过程D盘的abc.txt这个文件是不会因为突然断电而消失的,当你再打开电脑去D盘找,依然能看到abc.txt文件。

但这个操作过程确是由java中的InputStream相关类文件实现的。

查看完整回答
2 反对 回复 2016-09-22
  • qq_阳光下的海风_0
    qq_阳光下的海风_0
    其实基本的IO流的读写,我倒还能理解,就是对磁盘中数据的读取和写如操作。 但是,一般的(不涉及到内存流)读写操作,应该是把数据从磁盘中读到程序中,或者是把程序中的数据写入到磁盘中,此时应该还没有涉及到内存流,不然怎么会有内存流这一说呢? 概念上内存流是程序与内存之间进行数据交流的通道,也就是说把磁盘盘中的数据要真想读到内存中,得要先读到程序中,再从程序中读到内存中。 以上,是我看了代码后自己感觉的,但是为什么把数据读到程序中时,数据还没有到内存中,就不是很理解了!
  • 1 回答
  • 0 关注
  • 1471 浏览

添加回答

举报

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