05_GC and Tuning
GC和GC Tuning GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题: ...
GC和GC Tuning GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题: ...
使用JavaAgent测试Object的大小 对象大小(64位机) 观察虚拟机配置 java -XX:+PrintCommandLineFlags -version 普通对象 对象头:markword 8 ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开启为8字节 实例数据 引用类型:-XX:+UseCompressedOops 为4字节 不开启为8字节 Oops Ordinary Object Pointers Padding对齐,8的倍数 数组对象 对象头:markword 8 ClassPointer指针同上 数组长度:4字节 数组数据 对齐 8的倍数 实验 新建项目ObjectSize (1.8) ...
自动内存管理 相关概念 野指针:比较野的指针,指向内存被释放的内存或者没有访问权限的内存的指针。 原因:野指针主要是因为这些疏忽而出现的删除或申请访问受限内存区域的指针。 ...
Runtime Data Area and Instruction Set jvms 2.4 2.5 指令集分类 基于寄存器的指令集 基于栈的指令集 Hotspot中的Local Variable Table = JVM中的寄存器 Runtime Data Area PC 程序计数器 存放指令位置 虚拟机的运行,类似于这样的循环: ...
jvm 体系结构 jvm内存分布(运行时数据区) 程序计数器(线程隔离) 每个线程都有,记录着线程下一刻运行到哪里。如果执行的是方法,这里记录的是虚拟机字节码指令的地址。当执行的是Native方法的时候为空(Undefined)。 ...