
JVM
KnifeBlade
不要只是看起来很努力。
展开
-
JVM内存管理
     JVM采用自动内存管理机制,所以了解虚拟机在运行时的内存分配是很有必要的。引用一张已经出现在网上无数次的图,运行时的内存区域主要由以下几种形式构成:    &am原创 2018-08-30 22:44:55 · 164 阅读 · 0 评论 -
Java对象创建时的内存分配方式
       Java中通过new指令创建对象,当jvm收到一条new指令时,会首先检查常量池中是否可以定位到指定类的符号引用;如果可以,则表示对应类已经加载到jvm中,否则就需要先进行类加载的操作。    &am原创 2018-09-28 18:40:49 · 3932 阅读 · 0 评论 -
Java对象内存布局与访问定位
Java对象布局 Java对象由三部分构成:对象头、实例数据、对齐补充。(1)对象头 对象头通常包括两部分信息: &a原创 2018-09-29 14:44:32 · 1743 阅读 · 0 评论 -
JVM内存结构、内存模型,JAVA对象模型
今天在简书上看到一篇博文,讲解了JVM内存结构/内存模型以及JAVA对象模型这三个概念之间的区别,在此做一个记录:(1)JVM内存结构: 此概念与我们通常讲的JVM内存区域的划分是同一个概念:JVM在运行过程中会将内存分为堆、栈、方法区等五个部分,各个内存区域在程序过程中存储不同的数据,各有各的作用……巴拉巴拉,网上关于这个概念的讲解也太多了,以后会写一篇专门的博文来...原创 2018-06-29 10:17:02 · 906 阅读 · 0 评论 -
定位Java进程中最耗费CPU的线程并定位堆栈信息
1、获取Java进程的ID,可通过jps、ps等命令:2、top -Hp pid找出该进程中最耗费CPU的线程:TIME+ 列表示各个线程所花费的CPU时间,此处选取id为26939的线程进行分析。3、将ID转换为十六进制(在jstack输出的堆栈信息中线程ID为十六进制格式):4、打印进程9094的堆栈中线程id为2389的信息:可以看到当前线程主要花费的时间在阻塞等待上。...原创 2019-09-15 16:48:50 · 544 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记
1、对象创建的过程:当jvm收到new指令时,会检查常量池中参数类型的类是否被加载,如果没有先执行类加载;在堆中为对象分配内存空间(一个对象所占用的内存空间在编译时就已经确定);空间分配主要有两种方式:指针碰撞与空闲列表,具体使用哪种方式由jvm的垃圾回收方式决定;由于线程共享堆空间,为解决并发问题引入的"本地线程分配缓冲"的概念;内存空间初始化:即属性赋零值;设置对象头:包括类型信息...原创 2019-09-15 17:15:09 · 154 阅读 · 0 评论