| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 深入理解JVM内存区域 笔记 -> 正文阅读 |
|
[Java知识库]深入理解JVM内存区域 笔记 |
java的内存处理流程:第一步:JVM申请内存 第二步:初始化运行时数据区 第三步:类加载 第四步:执行方法 第五步:创建对象 GC概念 Java中GC会自动回收堆中的垃圾 可以主动触发垃圾回收:System.gc(),非常影响性能,不推荐 内存可视化工具HSDBHSDB,jdk下的一个检测jvm运行时的可视化工具。 可以查看堆信息,如查看堆中对象的地址 也可以查看栈信息,如查看局部变量表. JVM对栈的优化技术:当形参(局部变量表)和实参(操作数栈)进行值传递时,这个实参和形参都共用一个内存地址,节约空间。 栈和堆的内存区别:存储内容栈:基本数据类型以及对象引用。线程执行完毕就释放掉 堆:存储对象。(一个类被new出来,他的成员变量如果是基础类型还是在堆??????) 线程关系对于栈,里面的所有元素都是私有的 对于栈,里面的元素都是共享的 空间大小 栈是很小的(一个虚拟机栈,也就是一个线程分配1m,仔细思考一个栈帧分配1m它配么?)。 堆是比较大的,存放了所有的对象。循环创建对象将非常庞大 常量池与字符串Class(静态)常量池Class里面的东西(接口,方法,版本,字面量 字面量 ?什么是字面量?这东西一开始先保存在方法区,然后再根据String或者int分配到栈或者方法区么? String?a =”123”; String的字面量 Int a =123; ?int的字面量 符号引用? ???? 在Person类中引用Tools类 编译的时候,tools真实内存地址 Org.king.Tools ---符号引用 类加载的时候---符号引用---真实引用 ? 运行常量池直接引用放在运行时常量池。(根本没明白!!!!)JDK1.7以后可以放在堆里。但逻辑上还是在方法区(完全不懂) 字符串常量池不知道是属于运行常量池还是独立出来,但这个东西就是为了存放String类型的数据的。 ? String类是final。Value也是final。不能被重写,数据不能被修改,所以String都存放在字符串常量池。为什么这么设计?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:36:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |