1、java内存分析

2.2、面向对象内存分析

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

2.2.1、栈

栈的特点如下:

1、栈描述的是方法的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等);

2、JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等);

3、栈属于线程私有,不能实现线程键的共享;

4、栈的存储特性是:先进先出,后进后出;

5、栈是有系统自动分配,速度快;栈是一个连续的内存空间;

2.2.3、堆

堆的特点如下:

1、堆用于存储创建好的对象和数组(数组也是对象);

2、JVM只有一个堆,被所有线程共享;

3、堆是一个不连续的内存空间,分配灵活,速度慢;

2.2.4、方法区

方法区特点如下:

1、JVM只有一个方法区,被所有线程共享;

2、方法区实际也是堆,只是用于存储类、常量相关的信息;

3、用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等);

public class SxtStu {
int id;
String sname;
int age; Computer comp;//计算机 void study(){
System.out.println("我在认真学习,使用电脑:"+comp.brand);
} void play(){
System.out.println("我在玩游戏:王者农药!");
} 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基础(一)~~内存分析的更多相关文章

  1. Java基础01-JVM内存分析

    JVM java虚拟机 java编译后的class文件就是在java虚拟机上运行的 1.栈区(stacksegment)存放函数的参数值,局部变量的值等,在超过这个变量的作用域时就会被系统自动释放掉存 ...

  2. java基础篇---内存分析

    Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变 ...

  3. 【java基础】内存分析

    在上次我们说的<重载与重写>呢,我们遗留了一个问题,就是运行结果的各异性,那今天,我们就来探究一下         内存里的天地.                  首先呢,我们把mian ...

  4. 【Java线程与内存分析工具】VisualVM与MAT简明教程

    目录 前言 VisualVM 安装与配置 本地使用 远程监控 MAT 使用场景 安装与配置 获得堆转储文件 分析堆转储文件 窥探对象内存值 堆转储文件对比分析 总结 前言 本文将简要介绍Java线程与 ...

  5. Java基础知识--内存管理

    Java语言中 的垃圾收集器相对于以前的其他语言优势是什么? 过去的语言需要程序员显示的进行分配内存.释放内存.这种做法可能会引起“内存泄漏”,即由于某种原因是分配给程序的内存无法释放,如果该任务不断 ...

  6. java执行程序的内存分析系列专栏

    近段时间研究了java的程序执行过程中的内存分配,收获颇多,解决了我最近时间学习java的很多困惑点.写java内存分析系列的目的主要有两个,一来是希望给像我一样的java初学者一定的启发,希望也能解 ...

  7. java执行程序的内存分析系列专栏二之static变量和方法内存分析

    昨天写了简单的聊了下java执行程序时简单的内存划分,今天我们接着往下聊,聊聊static变量和方法的内存分析. 1.static变量和方法的第一个特性内存分析 statiic变量和方法的第一个特性能 ...

  8. Java内置内存分析

    Java内存分析 package com.chao.reflection; public class Test05 { public static void main(String[] args) { ...

  9. python基础(内存分析,不引入第三方变量的方式交换变量的值)

    a,b指向同一块内存地址 下面方法是重新给b赋值;a,b指向不同的内存地址 字符串或int类型内存分析 不引入第三方变量的方式,交换a,b的值

  10. Java基础-JVM内存回收

    Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对象分为年青代(Young).年老代(Tenured).持久代(Perm),对不同生命周期的对象使用不同的算法.( ...

随机推荐

  1. Centos7下areaDetector IOC的编译

    准备: Centos7ministall的系统: root权限下: yum install -y epel-release yum install -y git wget gcc gcc-c++ au ...

  2. Vulhub 漏洞学习之:AppWeb

    Vulhub 漏洞学习之:AppWeb 目录 Vulhub 漏洞学习之:AppWeb 1 AppWeb认证绕过漏洞(CVE-2018-8715) 1.1 漏洞利用原理 1.2 漏洞利用过程 1 App ...

  3. 拥抱下一代前端工具链-Vue老项目迁移Vite探索

    作者:京东物流 邓道远 背景描述 随着项目的不断维护,代码越来越多,项目越来越大.调试代码的过程就变得极其痛苦,等待项目启动的时间也越来越长,尤其是需要处理紧急问题的时候,切换项目启动,等待的时间就会 ...

  4. 几种排序(c#实现)

    代码: int[] arr = { 2, 3, 4, 6, 1, 5, 4 }; // 冒泡排序:把最小的往前冒 O(n2) //int temp1; //for (int i = 0; i < ...

  5. unity 音频曲线

    jp--------------- https://techblog.kayac.com/dynamic-waveform-generation-without-audio-clip https:// ...

  6. sudo漏洞解决方案--源码转rpm包(spec文件编写)

    RPM 知识储备 将源码包打包成rpm包,一般有两种情况 在找包中,能够在网上找到 ".src.rpm" 结尾的包,并且是根据漏洞需要升级的版本的包 在找包中,没有找到 " ...

  7. mysql 数据库的一些参数,常用模版和调优方式

    innodb_buffer_pool_size :这个参数是Mysql数据库最重要的参数之一,表示InnoDB类型的 表 和索引的最大缓存 .它不仅仅缓存 索引数据 ,还会缓存 表的数据 .这个值越大 ...

  8. js - 解决微信环境下,ios软键盘收起后页面空白

    思路:1.判断是否在微信中           2.判断是否在ios中           3.表单元素焦点将页面滚回到顶部 是否是微信环境 isWx() { let ua = navigator.u ...

  9. 访问不通github的解决办法

    访问不通github, 在hosts文件中手动加下域名IP 在hosts里添加github的ip 140.82.113.3 github.com #不要.199.232.5.194 github.gl ...

  10. 【1】部署环境python+pycharm+JDK+SDK+node安装+appium安装+Appium-python-client安装及配置+(模拟器)

    安装SDK检查命令  adb doctor 安装JDK,SDK是为了手机端应用程序的访问去做的基础库的搭建 JDK,SDK环境变量需要在一块,不要一个上,一个下 JAVA_HOME  Path  在一 ...