在HotSpot虚拟机中,对象在内存中存储的布局可以被分为3个区域:对象头(Header)、实例数据(Instance data)和对齐填充(Padding).对象头包括两部分信息,第一部分存储自身的运行时数据,如哈希值、GC分代年龄、锁状态标志、线程持有的锁、偏向锁ID、偏向时间戳等,这部分数据的 ...
分类:
其他好文 时间:
2019-09-30 23:54:51
阅读次数:
189
概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉及调优目标,GC事件分类、JVM内存分配策略、GC日志分析等 CMS原理及调优 G1原理及调优 GC ...
分类:
其他好文 时间:
2019-09-26 11:50:30
阅读次数:
76
使用-XX+PrintCompilation参数可以看到JVM做了哪些编译优化(包括逆优化和重新优化),输出的格式如下: <id> <type><method name> [bci] <(# of bytes)> 1、id可以为以下值: 2、type可以为空或者以下的一个或者多个值: 3、metho ...
分类:
其他好文 时间:
2019-09-12 21:07:53
阅读次数:
102
背景:由于CMS算法产生空间碎片和其它一系列的问题缺陷,HotSpot提供了另外一种垃圾回收策略,G1(也就是Garbage First)算法,该算法在JDK7u4版本被正式推出,官网对此描述如下: The Garbage-First (G1) collector is a server-style ...
分类:
其他好文 时间:
2019-08-31 11:03:22
阅读次数:
143
hotspot:是jvm的核心组件(或者名称),jvm 需要对class文件进行编译成cpu能直接运行的代码。hotspot会对频繁使用的class代码进行缓存,不会再次编译,类似于缓存 client 桌面级的时使用,分配的内存相对于server少 server 适合B/S结构,用于高并发 修改使用 ...
分类:
其他好文 时间:
2019-08-29 13:16:47
阅读次数:
62
概述 Java运行时区域中,程序计数器,虚拟机栈,本地方法栈三个区域随着线程的而生,随线程而死,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收问题。而Java堆和方法区则不一样,一个接口的多个实现类需要的内存不一样,一个方法的多个分支需要的内存可能也不一眼,我们只有在运行期,才能知道会创 ...
分类:
其他好文 时间:
2019-08-25 21:38:02
阅读次数:
105
class文件内容 class文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。 JVM运行时数据区 线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁 线程共享:所有 ...
分类:
编程语言 时间:
2019-08-25 14:14:25
阅读次数:
76
准备 服务器环境 centos7安装docker,使用tomcat镜像8.5,运行,并将webapps映射出来 开发环境 安装配置java环境 配置maven环境,修改镜像地址 配置vscode 安装 Spring Boot Extension Pack,Java Extension Pack,Ma ...
分类:
编程语言 时间:
2019-08-19 13:00:14
阅读次数:
92
各种类型的线程他们所需要的栈的大小其实是可以通过不同的参数来控制的: java_thread的stack_size,其实就是-Xss或者-XX:ThreadStackSize的值 compiler_thread的stack_size,是-XX:CompilerThreadStackSize指定的值 ...
分类:
其他好文 时间:
2019-08-19 11:15:49
阅读次数:
128
1. 对象的创建 1. 遇到 new 指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,执行相应的类加载。 2. 类加载检查通过之后,为新对象分配内存(内存大小在类加载完成后便可确认)。在堆的空闲内存中划分一块 ...
分类:
其他好文 时间:
2019-08-14 14:35:42
阅读次数:
84