Title

java运行时内存分配

JVM将内存区域划分为五个

  • 寄存器: 跟cpu打交道

  • 本地方法栈: 使用windows的功能

  • 方法区:存储方法 class文件

  • 栈: 运行方法的,变量...循环

  • 堆: new 对象

栈与堆的区别

  • 存储区别: 栈运行方法 堆存储实体(对象)

  • 默认值: 栈内存没有默认值,使用变量手动赋值
    堆内存有默认值

  • 生命周期: 栈内存使用完毕后,立即释放,生命周期相对较短
    堆内存使用完毕后,等待JVM收取垃圾,生命周期相对较长

运行时如何划分

  • 常量池存放与堆中

  • new出来的对象也存放与堆中,栈中存放的是指向这个对象的地址

  • 创建基本类型时,直接在栈中存放

java基本类型

public class HelloWorld {
 // 全局变量,静态变量
 static char hobby = '女';
 // 实例变量,成员变量,对象变量
 private int age;
 private double weight;
 private double height;
	 public static void main(String[] args) {
	 //基本数据类型
	 //长整短整照常整,单精双精不够精,布尔byte单字符,一二四八对对出
	 // 一个字节
	 byte a = 0;// 局部变量,使用需初始化
	 boolean b;
	 // 两个字节
	 short c;
	 char d;
	 // 四个字节
	 int f;
	 float e=1.35f;
	 // 八个字节
	 double g=1.0;
	 long h;
	 }
}

对于单双精度浮点数相加问题会出现不精确的情况,判断

//单双精度相加不精确
float e=1.35f;
double g=1.0;
//是否为精确:数字(n*2)*2..*2最终结果为整数就可以精确
System.out.println(e+g);

运行时效果图

posted @ 2022-07-22 17:11  快乐小洋人  阅读(45)  评论(0编辑  收藏  举报