黑马程序员技术交流社区

标题: 【深圳校区】深入理解 Java 虚拟机 学习笔记 [打印本页]

作者: 柠檬leung不酸    时间: 2018-12-19 09:31
标题: 【深圳校区】深入理解 Java 虚拟机 学习笔记

第二章 Java 内存区域与内存溢出异常内存区域
-- from 姜志明
对象创建对象的内存布局
对象访问
两种方式:
内存溢出异常常用 JVM 参数 (Java HotSpot VM)
参数
含义
实例

-verbose:class
显示每一个被加载的类的信息

-verbose:gc
显示每一个 GC 事件的信息

-Xmnsize
年轻代最大容量
-Xmn256m

-Xmssize
堆的初始大小。1024 的整数倍并且要大于 1MB
-Xms6m

-Xmxsize
堆的最大容量。1024 的整数倍并且要大于 2MB
-Xmx80m

-Xsssize
线程栈容量。平台不同默认值不同,详情参考文档。Linux/x64 (64-bit): 1024 KB
-Xss1m

-XX:MaxDirectMemorySize=size
直接内存的最大容量,默认与堆容量相同
-XX:MaxDirectMemorySize=1m

-XX:+HeapDumpOnOutOfMemory
当抛出 OOM 时,使用 HPROF 将堆的快照保存到当前目录

-XX:HeapDumpPath=path
设置快照输出路径
-XX:HeapDumpPath=/var/log/java/java_heapdump.hprof

-XX:+PrintGCDetails
开启在 GC 时打印详细信息

-XX:SurvivorRatio=ratio
新生代中 eden 与 survivor 的大小比例,默认为 8
-XX:SurvivorRatio=4
参考: Java HotSpot VM 参数
常见异常及可能原因String 与字符串常量public class StringTest {        public static void main(String[] args) {                String m = "hello";                String n = "hello";                String u = new String(m);                String v = new String("hello");                                System.out.println("m == n: " + (m == n));                System.out.println("m == u: " + (m == u));                System.out.println("m == v: " + (m == v));                System.out.println("u == v: " + (u == v));        }}output:m == n: truem == u: falsem == v: falseu == v: false
参考: 初探Java字符串
第三章 垃圾收集器与内存分配策略判断对象是否存活垃圾收集算法HotSpot 算法实现垃圾收集器
内存分配与回收策略
TLAB(Thread local allocate buffer)线程私有分配缓冲区,每个线程一个
第六章 类文件结构第七章 虚拟机类加载机制类加载的过程
类加载器第十章 早期(编译器)优化
// TODO: 因本章含有相当多的编译原理相关概念,所以第十、十一章学习延后(预计第 8-9 周)
前端编译过程(*.java --> *.class)参考

转载自 c-rainstorm
地址:https://github.com/c-rainstorm/b ... 6%8B%9F%E6%9C%BA.md






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2