zoukankan      html  css  js  c++  java
  • 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;
    }
    

    内存图:
    图片

  • 相关阅读:
    java。equal()和== 的区别
    java。封装
    java。OOA,OOD,OOR
    java。类和对象
    java、数组;堆区,栈区
    java。 break和continue区别
    NYOJ 228 士兵杀敌(五)【差分标记裸题】
    2017CCPC 杭州 J. Master of GCD【差分标记/线段树/GCD】
    CF1025B Weakened Common Divisor【数论/GCD/思维】
    网络流算法笔记
  • 原文地址:https://www.cnblogs.com/pallcard-LK/p/8971722.html
Copyright © 2011-2022 走看看