java基础(一)~~内存分析
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基础(一)~~内存分析的更多相关文章
- Java基础01-JVM内存分析
JVM java虚拟机 java编译后的class文件就是在java虚拟机上运行的 1.栈区(stacksegment)存放函数的参数值,局部变量的值等,在超过这个变量的作用域时就会被系统自动释放掉存 ...
- java基础篇---内存分析
Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变 ...
- 【java基础】内存分析
在上次我们说的<重载与重写>呢,我们遗留了一个问题,就是运行结果的各异性,那今天,我们就来探究一下 内存里的天地. 首先呢,我们把mian ...
- 【Java线程与内存分析工具】VisualVM与MAT简明教程
目录 前言 VisualVM 安装与配置 本地使用 远程监控 MAT 使用场景 安装与配置 获得堆转储文件 分析堆转储文件 窥探对象内存值 堆转储文件对比分析 总结 前言 本文将简要介绍Java线程与 ...
- Java基础知识--内存管理
Java语言中 的垃圾收集器相对于以前的其他语言优势是什么? 过去的语言需要程序员显示的进行分配内存.释放内存.这种做法可能会引起“内存泄漏”,即由于某种原因是分配给程序的内存无法释放,如果该任务不断 ...
- java执行程序的内存分析系列专栏
近段时间研究了java的程序执行过程中的内存分配,收获颇多,解决了我最近时间学习java的很多困惑点.写java内存分析系列的目的主要有两个,一来是希望给像我一样的java初学者一定的启发,希望也能解 ...
- java执行程序的内存分析系列专栏二之static变量和方法内存分析
昨天写了简单的聊了下java执行程序时简单的内存划分,今天我们接着往下聊,聊聊static变量和方法的内存分析. 1.static变量和方法的第一个特性内存分析 statiic变量和方法的第一个特性能 ...
- Java内置内存分析
Java内存分析 package com.chao.reflection; public class Test05 { public static void main(String[] args) { ...
- python基础(内存分析,不引入第三方变量的方式交换变量的值)
a,b指向同一块内存地址 下面方法是重新给b赋值;a,b指向不同的内存地址 字符串或int类型内存分析 不引入第三方变量的方式,交换a,b的值
- Java基础-JVM内存回收
Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对象分为年青代(Young).年老代(Tenured).持久代(Perm),对不同生命周期的对象使用不同的算法.( ...
随机推荐
- 【TS】object类型
object是一个对象,在ts中定义对象类型的语法为:let 变量名 :object = { } 在object类型中,对象内部定义的值是不受类型约束的,只要是一个object类型即可,例如: let ...
- 【TS】any和void
any类型 any类型,在ts中是一个万能类型,它可以替代所有类型,也就是说定义了any类型,就不用担心ts的类型束缚,但如果所有的类型都使用any那么ts就失去了它的作用,我们使用ts就是为了规范类 ...
- 有趣的python库-pillow
pillow-图像处理 安装时不再是PIL,是pillow哦! 烟花 pillow + tkinter实现 import tkinter as tk from PIL import Image, Im ...
- JZOJ 排列统计
排列统计 \(Description\) 对于给定的一个长度为n的序列{B[n]},问有多少个序列{A[n]}对于所有的i满足:A[1]-A[i]这i个数字中有恰好B[i]个数字小等于i.其中{A[n ...
- GetShell 之:利用 SQLServer GetShell
GetShell 之:利用 SQLServer GetShell 目录 GetShell 之:利用 SQLServer GetShell 1 SQLServer 基础操作 2 SQLServer 利用 ...
- Jenkins安装(Docker)版
一.jenkins安装 1.查找,下载jenkins镜像文件 启动docker,查找Jenkins镜像文件 docker search jenkins 下载Jenkins镜像文件 docker pul ...
- Sequelize.js + Express.js 开发 API
什么是 Sequelize 我们知道 Web 应用开发中的 Web 后端开发一般都是 Java.Python.ASP.NET 等语言.十年前,Node.js 的出现使得原本仅限于运行在浏览器中的 Ja ...
- LeetCode-1996 游戏中弱角色的数量
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/the-number-of-weak-characters-in-the-game 题目描述 你正 ...
- nginx中多ip多域名多端口配置
1.Nginx中多IP配置: server { listen 80; server_name 192.168.15.7; location / { root /opt/Super_Marie; ind ...
- c#反射优化
https://www.cnblogs.com/xinaixia/p/5777886.html https://www.cnblogs.com/xinaixia/p/5777961.html