Java GC系列(1):Java垃圾回收简介

转载自  Java GC系列(1):Java垃圾回收简介

这篇教程是系列第一部分。首先会解释基本的术语,比如JDK、JVM、JRE和HotSpotVM。接着会介绍JVM结构和Java 堆内存结构。理解这些基础对于理解后面的垃圾回收知识很重要。

Java关键术语

  • JavaAPI:一系列帮助开发者创建Java应用程序的封装好的库。
  • Java 开发工具包 (JDK):一系列工具帮助开发者创建Java应用程序。JDK包含工具编译、运行、打包、分发和监视Java应用程序。
  • Java 虚拟机(JVM):JVM是一个抽象的计算机结构。Java程序根据JVM的特性编写。JVM针对特定于操作系统并且可以将Java指令翻译成底层系统的指令并执行。JVM确保了Java的平台无关性。
  • Java 运行环境(JRE):JRE包含JVM实现和Java API。

Java HotSpot 虚拟机

每种JVM实现可能采用不同的方法实现垃圾回收机制。在收购SUN之前,Oracle使用的是JRockit JVM,收购之后使用HotSpot JVM。目前Oracle拥有两种JVM实现并且一段时间后两个JVM实现会合二为一。

HotSpot JVM是目前Oracle SE平台标准核心组件的一部分。在这篇垃圾回收教程中,我们将会了解基于HotSpot虚拟机的垃圾回收原则。

JVM体系结构

下面图片总结了JVM的关键组件。在JVM体系结构中,与垃圾回收相关的两个主要组件是堆内存和垃圾回收器。堆内存是内存数据区,用来保存运行时的对象实例。垃圾回收器也会在这里操作。现在我们知道这些组件是如何在框架中工作的。

Java堆内存

我们有必要了解堆内存在JVM内存模型的角色。在运行时,Java的实例被存放在堆内存区域。当一个对象不再被引用时,满足条件就会从堆内存移除。在垃圾回收进程中,这些对象将会从堆内存移除并且内存空间被回收。堆内存以下三个主要区域:

  1. 新生代(Young Generation)
    • Eden空间(Eden space,任何实例都通过Eden空间进入运行时内存区域)
    • S0 Survivor空间(S0 Survivor space,存在时间长的实例将会从Eden空间移动到S0 Survivor空间)
    • S1 Survivor空间 (存在时间更长的实例将会从S0 Survivor空间移动到S1 Survivor空间)
  2. 老年代(Old Generation)实例将从S1提升到Tenured(终身代)
  3. 永久代(Permanent Generation)包含类、方法等细节的元信息

永久代空间在Java SE8特性中已经被移除。

在本系列的第二篇将会介绍Java垃圾回收是如何工作的。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下载的c语言程序代码怎么运行,CFree怎么运行程序 编译运行C语言程序代码的方法...

CFree是一款C语言编译软件,用户可以利用这款软件编译C/C程序 ,如果你想要运行已经编写好的C语言代码,只需要几个简单的操作即可实现,如果你还不知道怎么运行,就赶快来看看下面的教程吧!1、首先需要先进入到…

docker4dotnet #2 容器化主机

.NET 猿自从认识了小鲸鱼,感觉功力大增。上篇 《docker4dotnet #1 前世今生 & 世界你好》中给大家介绍了如何在Windows上面配置Docker for Windows和Docker Tools for Visual Studio来使用docker协助.NET Core应用的开发,这篇我们来看看如何创建和管…

Java GC系列(2):Java垃圾回收是如何工作的

转载自 Java GC系列(2):Java垃圾回收是如何工作的本教程是为了理解基本的Java垃圾回收以及它是如何工作的。这是垃圾回收教程系列的第二部分。希望你已经读过了第一部分:《Java 垃圾回收介绍》。 Java 垃圾回收是一项自动化的过…

c语言程序为什么运行一半就自动关闭了,C语言为什么程序运行一半就出现停止工作...

匿名用户1级2016-04-04 回答有点儿意思。原因却出乎意料的简单。 char *rwtab[27]{"main","if","then","while","do"," static","int"," double","struct","break",&quo…

docker4dotnet #1 – 前世今生 amp; 世界你好

作为一名.NET Developer,这几年看着docker的流行实在是有些眼馋。可惜的是,Docker是基于Linux环境的,眼瞧着那些 java, python, node.js, go 甚至连php程序员都可以docker了,自己还在苦哈哈的装虚拟机,实在是急啊&…

Java GC系列(3):垃圾回收器种类

转载自 Java GC系列(3):垃圾回收器种类在这篇教程中我们将学习几种现有的垃圾回收器。在Java中,垃圾回收是一个自动的进程可以替代程序员进行内存的分配与回收这些复杂的工作。这篇是垃圾回 收教程系列的第三篇,在前面…

当当网新用户注册界面——CSS代码

<strong><span style"font-size:32px;color:#ff9966;">所有用到的图片都已上传&#xff0c;请在<a target_blank href"http://download.csdn.net/detail/qq_34137397/9667142">这里</a>下载</span></strong> <pre …

计算机二级c语言考试模拟试题,计算机二级C语言考前模拟试题及答案2016

计算机二级C语言考前模拟试题及答案2016(1)有以下程序&#xff1a;程序运行后的输出结果是(   )。A.852B.963C.741D.875421(2)有以下程序&#xff1a;程序运行后的输出结果是(   )。A.let4B.m2C.m6D.m5(3)有以下程序&#xff1a;程序运行后的输出结果是(   )。A.6B.3C.8D…

Visual Studio Code 1.3终于增加了标签页

2016年6月发布的Visual Studio Code 1.3版更新已发布&#xff0c;该版本提供了用户呼声最高的一个功能请求。 很长一段时间来&#xff0c;开发者一直呼吁为Microsoft的跨平台代码编辑器提供标签页功能。在UserVoice网站上有关这个功能的请求已获得超过9,000个投票。 标签页默认…

lego ev3 c语言编程,乐高 EV3 高级编程 – 第一课:安装

我的学生写的教程&#xff0c;英文版的&#xff0c;好吧&#xff0c;我翻译一下&#xff01;先介绍一下我的学生&#xff0c;今年 12 岁 (2018年)&#xff0c;普通 2 等中学初中 2 年级(学校名字就不说了&#xff0c;说了你也没听过&#xff01;)&#xff0c;除了数学和科学比较…

Java GC系列(4):垃圾回收监视和分析

转载自 Java GC系列&#xff08;4&#xff09;&#xff1a;垃圾回收监视和分析在这个Java GC系列教程中&#xff0c;让我们学习用于垃圾回收监视和分析的工具。然后&#xff0c;选用一种工具来监视一个Java示例程序的垃圾回收过程。如果你是一名初学者&#xff0c;你最好仔细阅…

ASP.NET Core开发-使用Nancy框架

Nancy简介 Nancy是一个轻量级的独立的框架&#xff0c;下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务&#xff0c;基于 .NET 和 Mono 平台&#xff0c;框架的目标是保持尽可能多的方式&#xff0c;并提供一个super-duper-happy-path所有交互。Nancy …

属性 方法c语言,C语言如何实现C++中对象属性和方法

在C中&#xff0c;我们常见到用类定义一个对象&#xff0c;这个对象可以有他自己的属性(数据)和方法(函数)&#xff0c;而在C语言的正常语法中&#xff0c;是禁止在结构体中定义函数的。在一个关于触摸屏的驱动程序中发现&#xff0c;用C语言的也可以实现对象的方法(函数)。首先…

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务书

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务书 竞赛概述 1.1.竞赛时间 本次竞赛时间共为8小时&#xff0c;参赛选手自行安排任务进度&#xff0c;休息、饮水、如厕等不设专门用时&#xff0c;统一含在竞赛时间内。 1.2.竞赛内容 功能测试的测试计划设计、测试…

当当网新用户注册界面——JS代码

<span style"color:#ff9966;"><span style"font-size: 32px;"><strong>所有用到的图片都已上传&#xff0c;请在</strong></span></span><a target_blank href"http://download.csdn.net/detail/qq_34137397/…

Java 内存区域和GC机制

转载自 Java 内存区域和GC机制Java垃圾回收概况Java GC&#xff08;Garbage Collection&#xff0c;垃圾收集&#xff0c;垃圾回收&#xff09;机制&#xff0c;是Java与C/C的主要区别之一&#xff0c;作为Java开发者&#xff0c;一般不需要专门编写内存回收和垃圾清理代 码&a…

docker – 你应该知道的10件事

容器并不是一个全新的技术&#xff0c;但这并不妨碍Docker如风暴一样席卷整个世界。 如果你在IT圈里&#xff0c;你一定听说过Docker。就算与其他热门技术&#xff0c;如&#xff1a;Puppet/Chef&#xff0c;Hadoop或者MongoDB放在一起&#xff0c;Docker仍然让你耳目一新。 不…

c语言运行太短怎么毡筒,C语言编程中的常见问题-最新文档.doc

C语言编程中的常见问题-最新文档.doc激也浸簧哼贰罪匠智事帛棕错永荤腑亦蛋讳躇睁传耀如雾油瘤十倍骋代敌楼毒伟愿煎蜡斌牺脯莆义贴炳揣烧瑶馅熟旨渍暂躲孟幢漏件哭射酱昏差辱尤可耕宾谍拼渠乱御日癸拳柱络胺农迸效催窒踩移呈德舞耀弗纽懈禄幕吁廖恫纺赖赚念状币溪追旧隐溢候粪…

解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题

在博问中&#xff08;.net core怎么实现邮件发送&#xff09;知道了MailKit无法使用阿里云邮件推送服务发送邮件的问题&#xff0c;自已实测也遇到同样的问题&#xff0c;而用自己搭建的邮件服务器没这个问题。 于是&#xff0c;向阿里云提交了工单。。。在提供了TCP抓包数据后…

JVM内存管理------垃圾搜集器参数精解

转载自 JVM内存管理------垃圾搜集器参数精解垃圾搜集器选择参数UseSerialGC&#xff1a;开启此参数使用serial & serial old搜集器&#xff08;client模式默认值&#xff09;。UseParNewGC&#xff1a;开启此参数使用ParNew & serial old搜集器&#xff08;不推荐&a…