[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
yuyutoo 2024-10-23 16:41 207 浏览 0 评论
目录:
[干货] JAVA - JVM - 10 内存回收-跟搜索算法
[干货] JAVA - JVM - 11 内存回收-回收策略
[干货] JAVA - JVM - 12 内存回收-跟搜索算法的 HotSpot 实现
[干货] JAVA - JVM - 13 内存回收-HotSopt 的分代策略和收集器
[干货] JAVA - JVM - 14 内存并发- JMM Volatile CAS
[干货] JAVA - JVM - 15 内存并发-Synchronize wait notify
jvm 中内存分两部分,堆外和堆(这里是泛指)。
NativeMemory
名字很多,堆外内存,本地内存,C Heap,直接内存都是它。
- 管理java heap的状态数据(用于GC);
- JNI调用,也就是Native Stack;
- JIT(即时编译器)编译时使用Native Memory,并且JIT的输入(Java字节码)和输出(可执行代码)也都是保存在Native Memory;
- NIO direct buffer。对于IBM JVM和Hotspot,都可以通过-XX:MaxDirectMemorySize来设置nio直接缓冲区的最大值。默认是64M。超过这个时,会按照32M自动增大。
这里提一句直接内存的释放,释放时只能通过释放直接内存的引用来间接释放。
Heap & Stack
通常大家理解的堆栈。容我dao个图:
栈
每个线程独自使用。
栈内部的部分看图自明,But:HotSpot 中没有本地方法栈,和 JavaStack 在一起。
堆
所有线程共同使用。
堆内部的具体分代结构,后边到回收部分再说。
方法区
名字很多,各种资料中的名字不大相同,大概有这些:方法区、持久区、Method Area 等。
1 Class 元数据和 Class 常量池
各种资料说的很乱(原谅我实在是看不懂 JVM 的源码~~,嗯.... 其实是犯懒,这玩意还用看源码?用用就知道了。),根据我的理解,这俩个东西其实是同一个,本人之后的所有博文有可能不固定的称呼,请诸公理解。
包含两部分:
所有的Literal:字符串、8中基本类型的值、final 的常量
所有的Symbolic References:类的全限定名、字段名称和描述符、方法名称和描述符(包含 public void 和 parameter type,parameter name 在 java8 中也可以放到方法区,那时候就不叫方法区了,叫 MetaSpace,关于变化稍后容禀)。
另外:有人会有疑问,static 的在什么地方?其实这和上边的不冲突,就看是否有 final,如果是 final 的,也是 Literal,如果没有,也是可以赋值的,在 Heap 中。个人见解,欢迎拍砖。
2 String Constant Pool 字符串常量池
zhei 东西不是每个类特有,是所有的类共有。
话说有个 StringTable 是个Map(PS:老程序员喜欢把什么什么 Map 称之为什么什么 Table,比如我~~),初始默认1009,MLGDD。说来话长,赶明我单写一章,或者有想琢磨的可以 google String.intern()。
Java6 中的方法区
- Class 元数据
- String Constant Pool 字符串常量池
Java7 中的方法区
String Constant Pool 字符串常量池 从方法区转移到 Java Heap 中。
Java8 中的方法区
删除方法区,新增 MetaSpace
Literal字面量移动到 Java Heap
Symbolic References 移动到 Native Memory
MaxMetaspaceSize 参数调整大小,也可以不指定,如果不指定,jvm 会动态调整。
欢迎拍砖,决绝骂娘
相关推荐
- 苹果要求全新App开发四月起必须支持“齐刘海”
-
今日消息,苹果公司通过邮件告知应用程序开发者,从2018年4月起提交给AppStore的所有新应用必须支持iPhoneX的超级视网膜显示器。这意味着新应用程序的开发者必须确保它们适应“齐刘海”,并...
- 耗时一年多,QEMU开发者成功在电脑上模拟了初版iPhone OS
-
IT之家12月24日消息,用户通过黑苹果(Hackintosh)工具,已经可以在非Mac设备上运行macOS系统。但由于种种限制,至今也没有多少人能够在PC上运行iOS系统。现...
- 下个月的WWDC后,苹果将发布原生Watch SDK测试版本
-
在近日Re/code举办的CodeConference上,苹果的运营副总裁JeffWilliams称,目前有4000多个AppleWatch应用上线,而未来的苹果表开发者套件,将允许开发者直接获...
- 苹果再次提醒:4月起强制要求APP进行适配
-
点击右上角关注我们,每天给您带来最新最潮的科技资讯,让您足不出户也知道科技圈大事!软件适配对于许多厂商来说都是一个比较头疼的事,苹果在握紧AppStore审核权的情况下情况要好许多。最近他们公布了...
- 苹果Xcode 16首个Beta版发布,AI代码补全最少需16GB内存
-
IT之家6月12日消息,在苹果WWDC24开发者大会上,苹果发布了iOS18、macOS15Sequoia等最新版本系统更新。与此同时,苹果推出了Xcode16开发工具的首...
- 传苹果已向特定开发者开放iWatch SDK
-
|责编:薄志强苹果会不会在这次发布会中发布全新的智能手表产品iWatch还很难说,不少人认为由于iWatch的消息少之又少,很可能这次还是没有iWatch。不过现在又有外媒传出消息称,苹果已经选定了...
- 苹果发布Swift 6语言:引入新测试框架、增强C++ 互操作性
-
IT之家9月20日消息,科技媒体devclass昨日(9月19日)报道,苹果公司在发布iOS/iPadOS18和macOS15Sequoia系统之外,还发布了Sw...
- 发布Siri SDK 之前苹果还是先想想这个问题
-
今年的GoogleI/O大会上,在预览GoogleHome时,我们就看到了设备可以互相对话的场景是多么惊艳,苹果快点跟上吧。最近因为亚马逊Echo和谷歌GoogleHome的火热...
- iOS 17.2 SDK代码确认古尔曼爆料:免开箱更新苹果iPhone系统
-
IT之家10月27日消息,彭博社的马克古尔曼(MarkGurman)本月早些时候发布报道,称苹果正在研发新的系统,可以让员工在不拆开包装的情况下,升级iPhone的iOS系统。根据国...
- 《企业应用架构模式》之事件驱动架构
-
事件驱动架构(Event-DrivenArchitecture,EDA)是一种强调事件流和异步通信的应用程序架构。在该架构中,应用程序被分解为多个小型、可独立部署的组件,这些组件通过事件进行通信...
- k8s中常用的controller以及用途和对应机制
-
controller的用途ReplicaSet、Deployment、StatefulSet:用于无状态和有状态应用的副本管理。DaemonSet:确保每个节点上都运行一个副本的控制器。...
- Disruptor框架源码阅读-如何不重复消费
-
RingBuffer如何保证数据不丢失由于ringbuffer是一个环形的队列,那么生产者和消费者在遍历这个队列的时候,如何制衡呢?1、生产快,消费慢,数据丢失?生产者速度过快,导致一个对象还没消...
- C# 控制电脑睡眠,休眠,关机以及唤醒
-
最近碰到一个关于芯片测试过程中的问题,这颗芯片是用在笔记本端口上,笔记本客户那边会有一个压力测试,就是频繁的电脑电源状态切换,S0(正常使用的开机状态),S3(睡眠模式),S4(休眠模式)以及S5(关...
- 大厂防止超卖的7种实现,很受用!(大厂防止超卖的7种实现,很受用的产品)
-
高并发场景在现场的日常工作中很常见,特别是在互联网公司中,这篇文章就来通过秒杀商品来模拟高并发的场景。本文环境:...
- 臻识车牌识别配制MQTT通讯,解析车号
-
在物联网项目中,我们的软件与车牌识别通讯,通常使用MQTT通讯更简单。...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
推荐7个模板代码和其他游戏源码下载的网址
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
【开源分享】2024在线客服系统PHP源码(安装教程+全新UI)
-
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)