07 2019 档案
摘要:概念 方法区是虚拟机规范定义的,是所有线程共享的内存区域,保存系统的类的信息。比如:类的字段、方法、常量池、构造函数的字节码内容、代码、JIT 代码 永久代、metaspace 是对方法区的实现。 Hotspot 实行分代管理内存(新生代、老年代、永久代) jdk8 实现方法区用 metaspace
阅读全文
摘要:概念 TLAB(Thread Local Allocation Buffer)线程本地分配缓冲区(线程私有分配区,私有分配,公共查看),占用 Eden 区(缺省 Eden 的1%),默认开启,JVM 会为每一个线程分配一块 TLAB 区域,避免堆对象共享造成的多线程线程同步。 背景 优化多线程堆空间
阅读全文
摘要:概念 对那些作用于不会逃逸出方法的对象,在分配内存时,不在将对象分配在堆内存中,而是将对象属性打散后分配在线程私有栈内存上,这样随着方法调用结束,栈上分配打散的对象也被回收掉,不在增加 GC 额外压力。 Java 对象分配流程 示例 循环创建1000000000一个对象,阻止栈上分配 栈上分配条件:
阅读全文
摘要:代码 其中 recursion(long a,long b,long c) 方法的栈帧如下,一共13 个long类型的局部变量一共占用 26 个字 感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力。 作 者 : "@mousycoder
阅读全文
摘要:Java 虚拟机基本结构 Java 堆 新生代、老年代划分 栈帧 感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力。 作 者 : "@mousycoder" 原文出处 : "http://mousycoder.com/thinking
阅读全文
摘要:环境 mac,xcode,jdk8, "openjdk" ,autoconf 步骤 1. 安装autoconf 2. 下载openjdk源码 3. 在openjdk 根目录下执行编译脚本,大约 10 分钟不到,执行完成 4. 进入编译的输出的jdk目录,执行 感谢您的耐心阅读,如果您发现文章中有一些
阅读全文
摘要:5 浮点数推导 二进制转十进制 1 10000001 01000000000000000000000 1 10000001 101000000000000000000000 如果指数位不全为 0 则尾数位首位+1 ,如果指数位全为 0,则尾数位首位+0 十进制 = 1 2^(129 127) (1
阅读全文
摘要:计算机中有补码表示 0 0 为正数 原码 00000000 00000000 00000000 00000000 反码 00000000 00000000 00000000 00000000 正数反码等于原码 补码 00000000 00000000 00000000 00000000 正数补码等于
阅读全文
摘要:Java 虚拟机地位 种类 BEA的JRockit Solaris的Exact VM IBM的J9 感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力。 作 者 : "@mousycoder" 原文出处 : http://mousycod
阅读全文
摘要:本系列主要是让一个刚入门的 java 开发者,也能愉快的从零开始成为一个真正的 jvm 大神。 大纲 java 虚拟机的定义、总体架构、常用配置 垃圾回收算法、各类垃圾回收器 java 虚拟机对多线程的支持 java 虚拟机的 class 文件结构 java 虚拟机的执行系统 待定 感谢您的耐心阅读
阅读全文

浙公网安备 33010602011771号