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. sqllabs靶场less1-4

    less1-4 语法:Select 列名称 from 表名称 (where column_name='xxx' and -) 在数据库中: information_schema:存放和数据库有关的东西 ...

  2. 通过Rsync实现文件远程备份

    转载:博客园 https://www.cnblogs.com/huligong1234/p/13513395.html

  3. Integer使用==比较的问题

    Integer使用==比较的问题 new一个对象 public Integer(int value) { this.value = value; } 自动装箱 public static Intege ...

  4. LeetCode-1001 网格照明

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/grid-illumination 题目描述 在大小为 n x n 的网格 grid 上,每个单元 ...

  5. C++程序设计实验二 数组、指针与C++标准库

    Info.hpp文件源码 #include<iostream> #include<string> #include<iomanip> using namespace ...

  6. Java定义一个方法处理公司的迟到问题的相关代码

    /** * 定义一个方法处理公司的迟到问题 * 1.输入迟到时间和月薪 * 2.处理逻辑: * 迟到1-10分钟,警告 * 迟到11-20分钟,罚款100 * 迟到21-30分钟,罚款200 * 迟到 ...

  7. Spring随意总结

    Spring框架的优点 1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑 2.可以提供众多服务,事务管理,WS等. 3.AOP的很好 ...

  8. 设计模式 > 单一职责原则

    SOLID原则并非单纯的1个原则,而是由5个设计原则组成的,它们分别是单一职责原则,开闭原则,里氏替换原则,接口隔离原则和依赖反转原则. 单一职责原则(SRP) 定义:一个类或者模块只负责完成一个职责 ...

  9. WDA学习(26):Phase Indicator使用

    1.19 UI Element:Phase Indicator使用 本实例测试创建Phase Indicator; 运行结果: 1.创建Component,View: V_PHASE_IND; 2.创 ...

  10. 力扣(leetcode)题库0001-python3

    试一下leetcode的题库,不知道对于我这种小白要多长时,但是目标已经种下,去做就是了.You can do anything you set your mind to. 题目:题库链接 中:给定一 ...