JVM
Jon_jing
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM学习一 java内存区域和内存外溢
一 java内存区域必不可少的一张图举个例子Integer i= new Integer(1);注释:名词-局部变量空间(solt)double是占两个1. 虚拟机栈:存放基本类型+对象引用2.堆:存放对象实例3.方法区:存放已被虚拟机加载的类信息,常量,静态变量,即时编辑器编译后的代码等数据,别名Non-Heap二对象分配方式1.指针碰撞:java堆...原创 2019-05-30 15:23:15 · 267 阅读 · 0 评论 -
JVM学习二 垃圾收集器与内存分配策略
一如何判断无效对象需要回收1.引用计数法:每一个对象都有一个计数器,当这个对象被一个变量或者另一个对象引用一次,计数器加一,若引用失效,计数器减一,如果计数器为0则认为该对象为无效对象(无法识别对象循环引用)2.可达性分析法:所有和GC Root直接或间接关联的对象都是有效对象,和GC Root没有关联的对象就是无效对象GC Root是指a.java虚拟机栈所引用的对象(栈帧中局...原创 2019-05-31 13:56:55 · 208 阅读 · 0 评论 -
JVM学习三 虚拟机性能监控与故障处理工具
一JDK的命令行工具1 jps :虚拟机进程状况工具可以列出正在运行的虚拟机进程并显示虚拟机执行的主类2。 jstat 虚拟机统计信息见识工具见识虚拟机各种运行状态信息的命令行工具3.jinfo:java配置信息工具实时查看和调整虚拟机的各项参数4. jmap:java内存映像工具用于生成存储快照(一般称为heapdump或者dump文件)5.jha...原创 2019-06-03 09:14:25 · 214 阅读 · 0 评论 -
JVM学习四 调优案例和实战
调优案例一在高性能硬件上部署程序1.通过64位JDK使用大内存 面临的问题:1,内存回收导致的长时间停顿2,现阶段64位JDK的性能测试结果普遍低于32位JDK3,需要保证程序足够稳定,因为这种应用要是产生堆溢出几乎无法产生堆转储快照,哪怕产生快照也几乎无法进行分析4,相同程序在64位JDK消耗 的内存一般比32位的JDK大,这是由于指针膨胀以及数据类型对齐补白等...原创 2019-06-03 11:16:00 · 307 阅读 · 0 评论 -
JVM学习五 类文件结构
一 Class类的文件结构解析Class文件的数据结构是本次最重要的内容任何一个class文件都对应着为一个类或者接口的定义信息,反过来说,类和接口并不一定都得定义在文件里(譬如类或者接口也可以通过类加载器直接生成)Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在class文件之中,中间没有任何分隔符,全都是必要数据,没有空隙存在一...原创 2019-06-04 09:38:46 · 291 阅读 · 0 评论 -
JVM学习6 虚拟机类加载机制
只是做笔记,列上自己觉得需要记住的(闲杂人等请勿较真)类加载时机遇到new,getstatic,putstatic或者invokestatic这四条字节码指令时使用java.lang.reflect的方法对类进行反射调用的时候当初始化一个类的时候,如果发现其父类还没有进行初始化,先初始化父类当虚拟机启动时,用户需要指定一个要执行的主类,(main)虚拟机会先初始化这个类当使...原创 2023-10-16 16:38:57 · 315 阅读 · 1 评论 -
JVM学习六 java内存模型与线程
一内存间交互操作1.定义 : 关于主内存和工作内存之间具体的交互协议,即一个变量如何从主内存拷贝到工作内存,如何从工作内存同步到主内存之类的实现细节2. 8种操作:lock(锁定):作为主内存的变量,他把一个内存标识为一条线程独占的状态unlock(解锁):作用于主内存的变量,他把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定read(读取):作用于主内存的变...原创 2019-07-03 16:00:12 · 232 阅读 · 0 评论
分享