当前位置: 首页 > news >正文

【java】堆栈、堆、方法区介绍

堆栈、堆、方法区介绍

终于开始看java啦…不知道有没有很多人跟我一样想法,先把安卓看完了再去看java,因为安卓直接跟工资挂钩而java更多的是内功.直到前段时间我和我们这边后台大佬对接开发websocket噩梦就开始了,这个线程不安全,这个单例在某些情况下有问题,这里应该这样封装等等…..每天围绕在我脑边,本来就是第一次做websocket,在加上后台大佬java大法猛如虎,真是感觉自己啥也不会了.

…不过现在是熬过来啦而且以后我可以说我做过基于websocket协议的im啦啦啦啦,容我嘚瑟一波哈哈哈哈( 这里需要感谢后台大佬刚哥带我把im搞了一遍:) )

这里也是预告我后面会写websocket的blog总结的,还往大家捧场.扯远了,回到主题正是因为这次经历让我意识到java的重要,重要的事再说一遍我要开始学java了.后面会陆续更新这个系列.觉得写得好的不好的都给点个赞蛤,感谢!

预备知识


java数据类型:

基础数据类型:boolean、byte、short、char、int、long、float、double
引用数据类型:类、接口、数组


堆栈、堆、方法区

JAVA的JVM的内存可分为3个区:堆(heap)、堆栈(stack)和方法区(method)


堆区:

提供所有类实例和数组对象存储区域
jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
栈区:

每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
方法区:

又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
运行时常量池都分配在 Java 虚拟机的方法区之中


栗子


public void test(){
  A a = new A();
  int b = 1;
}

public class A{

}123456789

这个栗子中


a是A对象的引用所以放在栈中,A是自定义对象所以放在堆中.
b是基础数据类型所以在栈中.


小结

这里用一个在别处看到的栗子总结再好不过

堆和栈的区别可以用如下的比喻来看出:


使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就 
走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自 
由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由 
度大。


第一次blog写这么短有点方.如果有错误的地方还望大佬们指出…小弟感激涕零
原文链接:https://blog.csdn.net/zly921112/article/details/61192747

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【java】反射机制
  • 【微服务】什么是微服务?微服务与分布式的区别?微服务怎么具体实践微服务?服务端发现和客户端发现...
  • 【Spring boot】Spring boot之@Value注解的使用总结---研读
  • 【mysql】MySQL 面试,必须掌握的 8 个知识点
  • 【大厂面试】面试官看了赞不绝口的Redis笔记
  • 【C/C++】理解C和C++中的左值和右值
  • 【MQTT】MQTT C语言客户端实现/ MQTT嵌入式客户端
  • 【VS】VS工程设置(包含目录、库目录、附加包含目录、附加库目录、附加依赖项)等...
  • 【linux】最小测试工程miniTest
  • 【VS】判断dll/lib是32/64位|查看lib是导入库/静态库的方法
  • 【C++】C++写后端程序
  • 【C++】C++ 知识点100题
  • 【架构】傻瓜都能看懂的高并发量服务器架构
  • 【mySQL】MySQL数据库知识整理
  • 【mySQL】Mysql InnoDB 共享表空间和独立表空间 区别和优缺点
  • Google 是如何开发 Web 框架的
  • python3.6+scrapy+mysql 爬虫实战
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 「译」Node.js Streams 基础
  • Akka系列(七):Actor持久化之Akka persistence
  • Android组件 - 收藏集 - 掘金
  • echarts的各种常用效果展示
  • httpie使用详解
  • js作用域和this的理解
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 汉诺塔算法
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于组件的设计工作流与界面抽象
  • 前端存储 - localStorage
  • 前端设计模式
  • 数据仓库的几种建模方法
  • 我建了一个叫Hello World的项目
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ### RabbitMQ五种工作模式:
  • #define
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (附源码)php新闻发布平台 毕业设计 141646
  • (简单) HDU 2612 Find a way,BFS。
  • (五)Python 垃圾回收机制
  • (一)Docker基本介绍
  • (译) 函数式 JS #1:简介
  • (转载)OpenStack Hacker养成指南
  • (转载)从 Java 代码到 Java 堆
  • ****Linux下Mysql的安装和配置
  • .htaccess 强制https 单独排除某个目录
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • /*在DataTable中更新、删除数据*/
  • @antv/g6 业务场景:流程图