对象存在哪里?

来源:互联网 发布:淘宝怎么查看我的评价 编辑:程序博客网 时间:2024/04/30 07:01

对象存储到什么地方:

1, 寄存器

(CPU内部)最快的存储区 但是数量有限。不由你控制,根据需求自动分配

2, 堆栈

位于RAM(随机访问存储器) 通过指针移动来分配内存,向下移动分配新内存,向上移动释放内存。速度仅此于寄存器。
但是必须知道存在堆栈内所有项的确切生命周期。所以java对象并不存储在堆栈中。

3, 堆:

一种通用的内存池(也是位于RAM中)存放所有的java对象。不同于栈的好处是:编译器不需要知道存储的数据在堆里面能存活多久

4, 常量存储:

通常直接存放在程序代码内部。这样做安全呀,他们永远不会被改变。

5, 非RAM存储

,如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。两个最基本的列子:
流对象 :对象转化为字节流,发送给另一台机器
持久化对象:对象被存放在磁盘
这种存储方式的技巧在于:把对象转换为可以存放在其他媒介的事物,在需要时,可以恢复成常规的,基于RAM的对象。

1.RAM的一般结构它由三部分电路组成:

这里写图片描述

  1)行、列地址译码器:它是一个二进制译码器,将地址码翻译成行列对应的具体地址,然后去选通该地址的存储单元,对该单元中的信息进行读出操作或进行写入新的信息操作。
  例如:一个10位的地址码A4A3A2A1A0=00101,B4B3B2B1B0=00011时,则将对应于第5行第3列的存储单元被选中。
  2)存储体:它是存放大量二进制信息的“仓库”,该仓库由成千上万个存储单元组成。而每个存储单元存放着一个二进制字信息,二进制字可能是一位的,也可能多位。
  存储体或RAM的容量:存储单元的个数*每个存储单元中数据的位数。
  例如,一个10位地址的RAM,共有210个存储单元,若每个存储单元存放一位二进制信息,则该RAM的容量就是210(字)×1(位)=1024字位,通常称1K字位(容量)。
  3)I/O及读/写控制电路:该部分电路决定着存储器是进行读出信息操作还是写入新信息操作。输入/输出缓冲器起数据的锁存作用,通常采用三态输出的电路结构。因此,RAM可以与其它的外面电路相连接,实现信息的双向传输(即可输入,也可输出),使信息的交换和传递十分方便。
这里写图片描述

基本类型

new是将对象存放在堆里面,所以new一个对象,小的 简单的对象不是很有效。所以java创建一个并非是引用的“自动”变量这个变量直接存储值,并置于堆栈中,因此更加高效。

基本类型 大小 最小值 最大值 包装类类型 boolean Boolean char 16-bit Unicode 0 Unicode 2^16-1 Character byte 8 bits -128 +127 Byte short 16 bits -2^15 +2^15-1 Short int 32 bits -2^31 +2^31-1 Integer long 64 bits -2^63 +2^63-1 Long float 32 bits IEE754 IEE754 Float double 64 bits IEE754 IEE754 Double void Void

Boolean类型所占存储空间的大小没有明确指定,仅定义能够取字面值true或false
BigInteger和BigDecimal用于高精度计算的类,只不过必须以方法调用,由于这么做复杂了一些,所以这里用运算速度换取运算精度。

public static void main(String[] args) {        System.getProperties().list(System.out);        System.out.println(System.getProperty("user.name"));        System.out.println(System.getProperty("java.library.path"));    }

第一行将显示从运行程序的系统中获取的所有属性,因此它可以向你提供环境信息,list()方法将结果发送给它的参数,后面是获取具体的属性。

原创粉丝点击