new出来的对象怎么回收_JVM的内存模型及垃圾回收算法
1、什么是jvm:
虚拟出来的计算机,是jre的一部分,使用jvm是为了支持与操作系统无关,实现跨平台,jvm内部体系结构主要分为三个部分:类加载器子系统,运行时数据区和执行引擎。
2、jvm内存区域
运行时数据区
3、jvm内存模型
根据Java虚拟机规范,JVM将内存划分为:
- New(年轻代)
- Tenured(年老代)
- 永久代(Perm)
其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。
- 年轻代(New):年轻代用来存放JVM刚分配的Java对象
- 年老代(Tenured):年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代
- 永久代(Perm):永久代存放Class、Method元信息,其大小跟项目的规模、类、方法的量有关,一般设置为128M就足够,设置原则是预留30%的空间。
4、垃圾回收算法
- 标记-清除算法(CMS年轻代)
- 复制算法(CMS年轻代)
- 标记-整理算法(CMS老年代)
查看内存工具
jconsole
jvisualvm
jmap
jstatus
https://cloud.tencent.com/developer/article/1346963
参见:https://www.zhihu.com/question/347865136/answer/836112517
jvm:内存模型、内存分配及GC垃圾回收机制 - 掘金juejin.im
new出来的对象怎么回收_JVM的内存模型及垃圾回收算法相关推荐
- JVM内存模型与垃圾回收GC
Java开发有个很基础的问题,虽然我们平时接触的不多,但是了解它却成为Java开发的必备基础--这就是JVM.在C++中我们需要手动申请内存然后释放内存,否则就会出现对象已经不再使用内存却仍被占用的情 ...
- 程序猿的日常——JVM内存模型与垃圾回收
Java开发有个很基础的问题,虽然我们平时接触的不多,但是了解它却成为Java开发的必备基础--这就是JVM.在C++中我们需要手动申请内存然后释放内存,否则就会出现对象已经不再使用内存却仍被占用的情 ...
- JAVA内存模型及垃圾回收自我总结
本文为原创,根据<深入理解java虚拟机>和自己的一些理解进行整理,单纯和看其他人的博客感觉不如自己一点点的画和记录来的印象深刻. JAVA内存模型: 上图中:局部变量表所需的内存在编译期 ...
- JVM内存模型和垃圾回收机制
JVM内存模型 根据Java虚拟机规范,Java数据区域分为五大数据区域. 其中方法区和堆是所有线程共享的,虚拟机栈.本地方法栈和程序计数器则为线程私有的. 有的博客称方法区是永久代,那是因为前者是J ...
- jvm内存模型与垃圾回收
*JVM历史JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫"即时编译" 互联网-js人工智能-python微服 ...
- python内存的回收机制_Python 内存管理以及垃圾回收机制
内存管理 Python解释器由c语言开发完成,py中所有的操作最终都由底层的c语言来实现并完成,所以想要了解底层内存管理需要结合python源码来进行解释. 1. 两个重要的结构体 include/o ...
- Java基础 —— JVM内存模型与垃圾回收
目录 一.概述 二.运行时数据区 方法区 运行时常量池 堆 栈 本地方法栈 程序计数器 三.对象访问 四.垃圾回收 如何定义垃圾 1.引用计数法 2.可达性分析 垃圾回收方法 1.Mark-Sweep ...
- java虚拟机内存模型与垃圾回收知识复习总结
今天日子很特殊,1024程序员节,本来每个月计划的是至少一篇博客,刚好这个月还没写,今天的日志又特殊,必须要写一篇博客. 之前看过一些讲java虚拟机的课程,但是学过容易忘,总结一下,平时可以多看看. ...
- JVM 内存模型、垃圾回收
JVM 内存模型 JVM运行时数据区是一种规范,而JVM内存模式是对该规范的实现. 重点存储数据的是堆和方法区(非堆),(注意这两块区域都是线程共享的). 一块是非堆区,一块是堆区 堆区分为两大块,一 ...
最新文章
- 帝国重新生成html,帝国CMS实现提交评论后自动重新生成内容页
- 简述一下生成对抗网络GAN(Generative adversarial nets)模型?
- 1.3. Getting Started Guides
- python全栈开发笔记--------条件语句
- 用SPSS进行单样本T检验(One -Sample T Test)
- Android 简单基站定位程序
- sql server数据库实现保留指定位数小数的函数
- 工作区、暂存区、版本库、远程仓库
- linux找到占用空间比较大的文件夹并按大小排序输出
- 【Bootstrap】 bootstrap-table表格组件
- linux shell学习三
- 589. N叉树的前序遍历
- 使用Wireshark抓包分析TCP协议
- 用python编写鸡兔同笼问题
- 带你深入了解 DNS 解析原理-递归与迭代
- 【Python】QQ大家来找茬辅助
- Python人脸识别 Python3.7+OpenCV+Dlib+罗技C920摄像头 实现离线实时摄像头画面人脸检测+识别
- 杭州最美的骑行路线在此!趁着春天蹬车撒欢去!
- 牛客网刷题day21
- Elixir: Enum函数总结
热门文章
- Vue + SpringBoot跨域
- .Net Core 开发成长路线图
- org.springframework.data.redis.serializer.SerializationException: Cannot serialize;
- 删除计算机360云盘,win7系统怎么取消电脑右键保存到360云盘选项
- 红帽linux5.5序列号,Redhat 5 安装序列号及版本说明
- pythonweb框架_浅谈python web三大框架
- linux冷备机怎么切换,linux – 热备用主机vs冷备用主机?
- oracle静默文件建库,【配置上线】Oracle静默建库 for 11g
- kafka集群脚本启动失败,在kafkaServer.out中提示nohup: failed to run command `java’: No such file or directory
- hdfs中Exception in createBlockOutputStream以及MapReduce中I/O error constructing remote block reader