java
xuyilin3310
这个作者很懒,什么都没留下…
展开
-
记录JVM参数配置
通用配置-XX:+DisableExplicitGC 禁用程序中手动调用GC 调试时打开 -XX:+PrintClassHistogram-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintCommandLineFlags -XX:+HeapDumpOnOutOfMemoryError 打印oom error -XX:HeapDu...原创 2019-07-15 17:17:10 · 739 阅读 · 0 评论 -
对JVM内存模型的理解
JVM内存模型:JVM会为每个线程分配独立的空间,用来进行本线程的运算。因此内存模型构成有线程独有的,也有线程共享的。程序计数器(PC) 线程独有的,是一块较小的内存空间。 记录本线程下一步要执行的指令,通过改变PC值来运行不同行的字节码。 栈(stack) 线程独有的,在线程启动时系统就会分配一个连续的、大小固定的内存空间,这个空间大小可以配置。简单理解就是存储线程运行时需要的引用...原创 2019-07-15 14:43:13 · 229 阅读 · 0 评论 -
对GC机制的理解
前言java程序员只需要关注业务流程无需管理内存,JVM会自动帮我们管理。程序运行过程中,对象、类信息等不停增加,占据的内存会越来越多,不及时清除可能是系统变慢甚至系统崩溃。因此java提供GC(Garbage Collection)机制自动地清除“垃圾对象”,回收空余空间。正因为GC机制由JVM管理,java程序员无法控制它的运行,GC时间也无法控制。 因此需要了解它,在工作中注意这方面。...原创 2019-07-17 10:59:29 · 320 阅读 · 0 评论 -
jmap工具使用
jmap是jdk自带的管理工具,可以详细地查看堆内存、类加载器使用情况,以及导入dump文件使用方法“pid”表示运行着的java应用的pid。jmap -h 查看jmap的使用帮助 jmap -heap pid 打印堆信息, 包括 JVM版本、垃圾收集器、堆配置、堆各个区域使用情况 jmap -histo pid 打印堆内每个类的实例数,以及各自占用空间 jma...原创 2019-07-17 16:42:28 · 2294 阅读 · 0 评论 -
LinkedList源码解析(JDK1.8)
文档头LinkedList是List和Deque接口的双向链表实现,实现所有列表操作,允许null。 有关index的操作都会遍历链表,只是从头走或从尾遍历的区别 是不同步,需要外部同步操作或 Collections.synchronizedList(new LinkedList(...)); iterator也是fast-fail类型的,iterator生成后,除了iterator自己...原创 2019-07-24 17:09:55 · 312 阅读 · 0 评论 -
ArrayList源码解析(JDK1.8)
文档头Arraylist 是List接口实现类,是可扩容数组。允许空值,粗略地认为与Vector相同,不过是非同步的。 capacity指定内部数组容量,可以自动增长。存入大量数据前可以ensureCapacity(),确保容量达到一定值,也可以称作扩容 非同步地, 多线程访问发生结构性修改时,必须外部同步操作;或者用Collections.synchronizedList。 itera...原创 2019-07-22 15:22:17 · 142 阅读 · 0 评论 -
Vector源码解析(JDK1.8)
文档头Vector是可变长度数组 通过capacity 和 capacityIncrement 管理数据的存储空间 也是fast-fail的 是同步的变量定义 protected Object[] elementData; // 元素数组 protected int elementCount; // 元素数量 protected int capaci...原创 2019-07-24 15:58:55 · 180 阅读 · 0 评论