JVM 内存方面

基于深入理解JVM上个人笔记,不确定对。

1. 主要记录内存方面的,,,

管理的内存主要有:方法区、虚拟机栈、本地方法栈、堆,程序计数器

程序计数器:记录虚拟机指令字节码地址,执行的下一条指令、每个线程都有独立。(native时,技术值为空)

java虚拟机栈:线程私有,生命周期等同线程,储存方法内存模型,局部变量表、,调用和完成=入栈和出栈。

本地方法栈:与java虚拟机栈相似,执行其他语言(c/c++/other)

Java堆(Heap):线程共享,几乎所有对象和数组存在里面。

方法区:线程共享,储存已被加载的类信息、常量(final)、静态变量(static)、包括运行时常量词。


e.g. 在main方法中,int a ; a =1; 主线程:Java虚拟机栈将main方法入栈,包含变量表(int),和操作数栈(指令),程序计数器从操作数栈中逐一执行。

        在main方法中,调用其他方法fun(),入栈,执行完毕出栈

        在main方法中,Person person= new Person(); person.a=1;入栈、类加载,在java堆中分配内存,在方法区记录类信息((new)Person),程序计数器下跳,此报告虚拟机栈中main方法局部变量表引用,找到person在堆的地址和在方法区的类信息,堆中内存a值更改。出栈。

 类/成员变量储存位置  int a; 类在类加载时被分配在java堆。Person p;类加载时分配在java堆,存放引用值,指向其被加载时堆地址。String s = "ss",String应该也是引用值,大多数指向方法区的常量词。static int a;应该在方法区,应该编译时就存入。static Person p;引用值存在方法区。

private final int 和final Person 不知道放在哪、还有void fun()在入栈前在存在哪的,还是说编译时就已经建立好虚拟机栈了?所以初定的结构式,应该都存在类加载时的java堆里,而通过成员变量找到。static void fun()应该在方法区。

垃圾收集器最主要是要收集堆,并非是持有引用就不回收,而是被引用链可到GC ROOTS,GC通过可达性分析。

收集算法和收集器没怎么看懂。暂不理会。

内加载和执行引擎,暂不理会,tomcat实现了自定义类加载器。

运算速度与通信速度差距太大:磁盘IO,网络,数据库等(卧槽,为什么没写内存,明明后面没提到这三个),所以需要高速缓存(Cache),每个处理器都有自己的Cache,又共享主内存(Memory),出现一致性问题,需要协议。Java需要规范一种通用内存模型,达到共平台。这个内存模型按作者说法是与前面堆栈之类的不是一个层次的划分。猜测是偏与硬件对应多一点,工作内存对高速缓存,主内存对内存。然后就是java制定的交互协议对上面的系统协议。lock、unlock、read、load、use、assign(赋值)、store、write。通过rl和sw进行工作内存和主内存交互。volatile具有可见性(线程1 assign普通变量时,需要经过sw到主内存,线程2rl才可以,而volatile修饰时线程2可以立即得知),但不等于线程安全。用于只读判断时作用较多。因为细分成字节码指令时,只有第一条是准确的,运行下一条时,有可能已经发生了改变。volatile第二特性禁止指令重排序优化(重排序,结果正确,但顺序不确定),加不加生成的汇编码有差异,除了单例其他也不建议使用,使用最多的同步锁即可。

    synchronized块之前的就具备原子性,可见性:线程1修改共享变量,全线程立即得知,volatile,syn,final。有序性:不懂。应该与重排序优化相关?

    java线程使用内核线程实现,1:1,抢占式线程调度。

还需要做的建议:1.重读并尝试。2. 一条指令执行的完整过程(编写java代码-编译中间class-虚拟机解析-汇编-指令集?-输入)3.JVM告一段落

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354