java 栈与堆 今天真是学习了!!
出处:来源于CSDN ZangXT大虾对某篇关于java中栈与堆的文章的回复
大体分析一下
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
//栈都是由运行环境来处理的,这点C++和java没有什么不同.对于堆,不过java多了个GC.
2.这里的堆和栈首先要明确是虚拟机栈,和寄存器根本不是一个级别的东西,就别比较了.
3.栈数据共享好像是作者自己创造的概念.而且给基本类型也引入了"引用"的概念,不知道出于何种打算.
java虚拟机规范中说:Primitive values do not share state with other primitive values. A variable whose type is a primitive type always holds a primitive value of that type.
看一下实际的处理情况:
int a=3;
int b=3;
int c=65535;
int d=65535;
int e=32330;
int f=32330;
看对应的虚拟机指令,可以知道变量里实际存储的是什么:
Code:
0: iconst_3 //3
1: istore_1
2: iconst_3 //3
3: istore_2
4: ldc #2; //int 65535
6: istore_3
7: ldc #2; //int 65535
9: istore 4
11: sipush 32330
14: istore 5
16: sipush 32330
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
3.Sun HotSpot
1.4.1 JVM堆大小的调整
Sun HotSpot 1.4.1使用分代收集器,它把堆分为三个主要的域:新域、旧域以及永久域。Jvm生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久域中jvm则存储class和method对象。就配置而言,永久域是一个独立域并且不 ......
解决栈和堆内存溢出办法要设置环境内存变量:
1、在运行界面(cmd进入)中运行命令:java -Xms256m -Xmx1024m,维护上下限内存参数,最大内存不能错过系统内存的1/4,最小内存不能小于最大内存的1/4
2、在Tommcat /bin路径下,如果是安装版需要service.bat文件,此文件在解压缩版里。
3、 在运行界面(cmd进入)中
......
一个java文件中,有且只有一个public类
float ff= 1.3f;(4B)
int 4B;
long 8B;
double 8B;
byte 一字节整型
char 2B
数组
int num[] = new int[3];
int[] num;
num = new int[3];
int [] num = new int[]{1,2,3};
int [][] num;
num = new int[3][4];
//不同长
num = new int[3][];
num[0] = new int[5]; ......