JVM

JVM:Java Virtual Machine即java虚拟机
虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统

Java虚拟机详解02----JVM内存结构

Java中的内存分配

java程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对数据进行了不同空间的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
具体划分为如下5个内存空间

  • :存放局部变量
  • :存放所有new出来的东西
  • 方法区:被虚拟机加载的类信息、常量、静态常量等
  • 程序计数器(和系统相关)
  • 本地方法栈

堆内存:

和程序开发密切相关
应用系统对象都保存在Java堆中
所有线程共享java堆
对分代GC来说,堆也是分代的
gc管理的主要区域

栈内存:

线程私有,生命周期和线程相同
栈由一系列帧组成(因此java栈也叫做帧栈)
帧保存一个方法的局部变量、操作数栈、常量池指针
每一次方法调用创建一个帧,并压栈

Java虚拟机详解04----GC算法和种类【重要】

  • 引用计数算法(老牌垃圾回收算法,无法处理循环引用,没有被java采纳)
  • 根搜索算法(在根搜索算法基础上,主要有下面三种)
    • 标记清除算法
    • 复制算法(新生代的GC)
    • 标记整理算法(老年代的GC)
  • 分代收集算法(新生代的gc+老年代的gc)
  • 根据对象的存货周期的不同将内存划分为几块。一般是把jva堆分为新生代和老年代:短命对象为新生代,长命对象为老年代
  • 少量对象存活,适合复制算法:在新生代中,每次gc都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成gc
  • 大量对象存活,适合用标记清理/标记整理:在老年代中,因为对象存活率高、没有额外空间对他进行分配担保,就必须使用标记清理/标记整理算法进行gc
    老年代的对象中,有一小部分是因为在新生代回收时,老年代做担保进来的对象;绝大部分对象是因为很多次gc都没有被回收掉进入老年代

Java虚拟机详解----JVM常见问题总结

类加载过程

  1. 加载:将类的class文件读入内存,并创建java.lang.Class对象
  2. 链接
  • 验证:文件格式、语法语义验证等
  • 准备:为static修饰的静态域默认初始化,并在方法区分配内存空间
  • 解析:将符号引用替换为直接引用
  1. (显示)初始化
    以下几种情况中,会执行初始化过程:
  • 创建类的实例
  • 访问类或接口的静态变量(final static修饰的常量不会对类进行显示初始化。static final修改的变量则会做显示初始化)
  • 调用类的静态方法
  • 反射
  • 初始化类的子类(子类初始化问题:满足主动调用,即父类访问子类中的静态变量、方法,子类才会初始化,,否则仅父类初始化)
  • java虚拟器启动时被表明为启动类的类
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,528评论 3 83
  • JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: ...
    光剑书架上的书阅读 2,477评论 2 26
  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 5,946评论 2 31
  • JVM架构 当一个程序启动之前,它的class会被类装载器装入方法区(Permanent区),执行引擎读取方法区的...
    cocohaifang阅读 1,644评论 0 7
  • 导语:有些人很喜欢运动后大汗淋漓的酣畅感觉,他们认为多运动、多出汗能让身体的毒素排出去。那么,不让身体出汗和多出汗...
    GabrielSu阅读 570评论 0 0