概念一:程序的栈(栈帧)和堆

栈:每个线程都有一个栈(栈帧),栈里包含main方法和其他main方法调用的其他方法,方法调用完后,自动释放——弹出栈(栈顶指针向下)。

堆:包含新建的对象的详细信息。需要手动释放

最难调试的bug:

  • 野指针

同一个对象,两个指针,一个释放了,另外一个不知道还拿来用

同一个指针,不同位置,

不在指向任何对象的指针

NullPionterExcepetion

  • 并发问题

    多线程访问同一块空间。

语言的发展历史

C/C++

  • 手工管理 malloc free/new delete
  • 忘记释放 - memory leak- out of memory
  • 释放多次 产生极其i难以调试的bug,一个线程空间莫名其妙被释放
  • 运行效率高,开发效率低。

Java python go

  • 方便内存管理的语言
  • GC—Garbage Collector —应用线程只管分配,垃圾回收器负责回收

rust

  • 运行效率超高(asm c c++)
  • 不用手工管理内存(没有GC)
  • 学习曲线巨高

garbage的概念

判断堆里面的对象是否是garbage

  • 简答思想:

    每个变量都有一个计数器,记录指向其的指针数,(不好)python引用计数法

  • java使用根可达**(Root Searching)**算法

垃圾回收机制:

  • Mark Sweep(标记清除)缺点:碎片化
  • Copying :只用一半的空间,垃圾回收时,把用过的一半中有效的内存整理好放进另一半里,之前的一半完全重置。(内存浪费)
  • Mark Compact(),使用整块内存,回收垃圾时整理有用的部分,清除其余部分。效率低,三种最低。

对这三种算法的综合运用,诞生了各种各样的垃圾回收器。

JVM Java程序运行底层原理及垃圾回收概念 day1相关推荐

  1. JVM底层原理+四大垃圾回收算法详解-周阳老师

    转载自,感谢原作者:https://www.jianshu.com/p/9e6841a895b4 注意:垃圾回收算法周阳老师讲的有错误,具体在p19,四大垃圾回收算法为复制算法.标记-整理算法.标记- ...

  2. 从Java程序运行的角度分析JDK1.8下JVM的内存区域划分及变量存储

    (内容归纳于网络,不妥之处可共同商讨) 文章目录 Java程序运行 Java编译器 JVM HotSpot 类加载器 字节码校验器 JVM内存五大区域 JDK1.8 下的方法区 元空间与永久代 JDK ...

  3. 【Java开发语言 01】第一章 Java语言概述(基础常识+Java语言概述+Java程序运行机制及运行过程+Java语言环境的搭建+开发体验hello world+错误:编码GBK的不可映射字符)

    java入门-第一章Java语言概述 1基础常识 软件开发 人机交互方式 常用的DOS命令(win系统,有一些直接通过命令执行的) 2 Java语言概述 什么是计算机语言 关于面向对象和面向过程 Ja ...

  4. JVM内存模型、原理、垃圾回收、调优

    JVM内存模型.原理.垃圾回收.调优,这Java语言的基础,作为Java从业人员是必须要掌握的,另外这也是面试经常会问到的知识. ----------------------------------- ...

  5. Java 程序的工作原理

    文章目录 Java 语言的主要特点 Java 体系 从源码到机器码的过程 JDK.JRE 与 JVM 是什么 字节码解释过程 Java两大核心机制之JVM Java两大核心机制之GC Java 语言的 ...

  6. java程序运行机制

    计算机高级编程语言分为两种: 编译型:针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式. 一次性的编译成平台相关的机器语言文件,运行 ...

  7. Java程序运行机制简介

    Java程序运行机制 Java语言是一种特殊的高级语言,它既具有解释型语言的特征,也具有编译型语言的特征,因为Java程序要经过先编译,后解释两个步骤. 高级语言的运行机制 计算机高级语言按程序的执行 ...

  8. java 程序运行过程 简介

    这里的Java程序运行过程,是指我们编译好代码之后,在命令行开始执行java xxx命令,到java程序开始执行起来的这一过程,我们称其为运行时. 第一步,操作系统解析我们输入的java xxx命令, ...

  9. 【Java 虚拟机原理】垃圾回收算法 ( Java 虚拟机内存分区 | 垃圾回收机制 | 引用计数器算法 | 引用计数循环引用弊端 )

    文章目录 一.Java 虚拟机内存分区 二.垃圾回收机制 三.引用计数器算法 ( 无法解决循环引用问题 ) 一.Java 虚拟机内存分区 Java 虚拟机内存分区 : 所有线程共有的内存区域 : 堆 ...

最新文章

  1. 第一课时之HTML简介
  2. Reverse Linked List II leetcode java
  3. 从内置函数看 Python 的设计思想:len(x) 是否击败 x.len(),
  4. 浪费超9000亿美金,数字化转型失败罪魁祸首在DevOps?
  5. 《MySQL必知必会》.pdf
  6. Genymotion下载及安装(安卓虚拟机)
  7. 2020 ECCV 目标检测冠军
  8. 数学一年级应用题_一年级数学下册100以内加减法应用题,给孩子下载!
  9. 惯导系统误差分析(一) 惯性导航系统的误差与误差源
  10. 【mosek.fusion】Primal SVM
  11. Android手机无法上网怎么办,Android手机的WIFI连接上了却不能上网是怎么回事如何解决...
  12. 如何在“一周内”摸清一个行业
  13. day3-作业(18-23)(java泛型总结一)
  14. Windows Terminal PowerShell 7 美化
  15. char如何储存那么多汉字
  16. 10-199 C2-1修改订单运费
  17. android 应用图标 角标 显示未读消息
  18. C语言高精度加法(含c++版)
  19. msys 的安装和使用
  20. quartz定时任务不执行

热门文章

  1. 基于Docker的云部署
  2. 关于Android Camera变焦
  3. 新版中日交流标准日本语初级第五课之应用课文
  4. 「前端架构」Grab的前端学习指南
  5. 中e管家3种理财方法教你抵御风险
  6. 如何打造软件、应用类shopping mall
  7. WiFi共享精灵出错之错误代码简介篇
  8. 职能部门是否可以不参加绩效考核?
  9. Django动态获取mysql连接,django model中的choices 动态从数据库中获取
  10. 亲手搭建美团外卖、饿了么外卖红包公众号