• Java虚拟机内存分析


    Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area

    • 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧
    • JVM为每个线程创建一个栈,用于存放该线程执行方法的信息
    • 栈属于线程私有,不能实现线程间的共享
    • 先进后出
    • 栈是由系统自动分配,速度快!栈是一个连续的内存空间

    • 堆用于存储创建好的对象和数组
    • JVM只有一个堆,被所用线程共享
    • 堆是一个不连续的内存空间,分配灵活,速度慢

    方法区

    • JVM只有一个方法区,被所有线程共享
    • 方法区实际也是堆,只是用于存储类、常量相关信息
    • 用于存放程序中永远是不变或者唯一的内容。(类信息、静态变量、字符串常量)

    示例代码:

    public class SxtStu {
    
    	//属性fields
    	int  id;
    	String  sname;
    	int  age;
    	
    	Computer  comp;  //计算机
    	
    	//方法
    	void  study(){
    		System.out.println("我在认真学习!!,使用电脑:"+comp.brand);
    	}
    	
    	void  play(){
    		System.out.println("我在玩游戏!王者农药!"); 
    	}
    	
    	//构造方法。用于创建这个类的对象。无参的构造方法可以由系统自动创建。
    	SxtStu(){
    		System.out.println("调用了无参的构造方法!");
    	}
    	
    	//程序执行的入口,必须要有
    	//javac  Sxtstu.java   ,   java Sxtstu
    	public static void main(String[] args) {
    		SxtStu  stu = new SxtStu();   //创建一个对象
    		stu.id=1001;
    		stu.sname= "高淇";
    		stu.age = 18;
    		
    		Computer  c1 = new Computer();
    		c1.brand = "联想";
    		
    		stu.comp = c1;
    		
    		stu.play();
    		stu.study();
    		
    	}
    }
    
    class  Computer {
    	String  brand;
    }
    

    内存图:
    图片

  • 相关阅读:
    基础编程练习题第一波
    TYVJ 1541 八数码
    NOIP 2014 寻找道路
    NOIP2014 解方程
    POJ 3213 矩阵乘法(优化)
    POJ 1523 Tarjan求割点
    POJ 3237 树链剖分+线段树
    SPOJ 375 树链剖分
    NOIP 2012 T2 国王游戏 (贪心+高精)
    POJ 1364 差分约束
  • 原文地址:https://www.cnblogs.com/pallcard-LK/p/8971722.html
Copyright © 2020-2023  润新知