JVM
叶巨岩
自律是成功的必要因素
展开
-
JVM基础到实战02-java对象加载,结构,访问
思考:java对象是什么?java对象是类的一个实例,类是java对象模板java对象的加载顺序:一、Java对象如何申请内存呢?1.指针碰撞:使用区扩大,空闲区3缩小 步骤:分配内存,移动指针2.空闲列表:由于内存空间的占用情况并非均匀的,并不能按照指针平移的方式分配内存空闲列表中维护了内存中不连续的空闲内存的地址步骤:分配内存,修改空闲列表以上两种...原创 2019-07-12 00:30:08 · 89 阅读 · 0 评论 -
JVM基础到实战01-JVM内存区域分布概述
思考:java优势巨大,为什么?1.java一次编译到处运行2.java具有完整的内存管理机制,不需要每new一个对象,写相应的内存回收代码JVM运行时数据区1.程序计数器是什么?程序计数器是一块较小的内存空间,可以看做是当前线程字节码的行号指示器线程是一个独立的执行单元,由cpu执行字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令,指令的循环,跳转...原创 2019-07-30 00:01:16 · 137 阅读 · 0 评论 -
JVM基础到实战03-垃圾回收概念
1.为什么要进行垃圾回收?不回收会造成内存泄漏2.什么时候执行回收?达到一定的比例,或者申请的内存超出了空闲内存,触发回收3.如果是你,如何设计垃圾回收算法?就是回收哪些类型的对象回收栈中没有指针指向对象,断开连接的对象4.如何判定对象存活呢?引用计数法:堆中的每个对象实例都一个引用计数器,每当一个对象被创建时,且将该对象分配给一个变量,该变量数设置为1,当任何变量...原创 2019-07-31 00:29:01 · 113 阅读 · 0 评论 -
JVM基础到实战04-垃圾回收算法
上一章讲了对象的存活分析,分析完对象是否存活后,我们就需要执行相应的垃圾回收过程,至于选择哪种垃圾回收算法呢,目前主要有以下三种垃圾回收算法:1.标记清除算法过程:标记--》清除产生的问题:1.标记和清除的过程效率都不高2.空间问题,标记清除后会产生大量的不连续内存碎片,空间碎片越多会导致以后程序在在分配较大的对象实,无法找到足够的连续内存二不得不提前出发一次垃圾收集动作。...原创 2019-07-31 00:37:01 · 137 阅读 · 0 评论 -
JVM基础到实战05-垃圾收集器
1.serial垃圾收集器(串行)运行过程:特点:1,是一个单线程的垃圾回收器,stop the word,进行垃圾回收时,必须暂停其他所有的用户线程2,使用场景,多用于桌面应用,client的垃圾回收器3. 桌面应用内存小,进行垃圾回收的时间比较短,只要不频繁的停顿就可以2.ParNew垃圾回收器是什么?ParNew仅仅是serial回收器的多线程版本运行过程:...原创 2019-07-31 23:38:02 · 206 阅读 · 0 评论 -
JVM基础到实战06-jvm内存自动分配原则
一、java堆的基本分配规则1.-对象主要分配在新生代的Eden区-如果启动了本地线程分配缓冲,按线程优先在TLAB上分配-少数情况下也可能直接分配在老年代中,比如较大的对象2.GC参数指定垃圾回收-Xms20M jvm初始内存-Xmx20M jvm最大内存-Xmn10M jvm年轻代大小这三个参数限制了java堆大小为20MB不可拓展,其中10MB分配给新生代...原创 2019-08-01 00:01:21 · 373 阅读 · 0 评论 -
JVM基础到实战07-JDK自带的jvm分析工具
java虚拟机自带的工具,将jdk的lib下的tools包解压后可以发现工具的源码,或者直接在bin目录下也能看到工具.exe执行文件1. jps这个命令和ps -ef |grep java有相似的用处jps是典型的jvm工具,查看jvm当前运行的项目的进程pid实践:运行一个springboot项目jps -v 展示当前的jvm环境jps -l 展...原创 2019-08-14 13:16:30 · 727 阅读 · 0 评论 -
JVM基础到实战08-图形化分析工具jconsole
jconsole是JDK自带的一个图形化的jvm分析工具我们启动一个项目,直接在cmd窗口下输入jconsole,发现会跳出一个jconsole的程序界面可以看到,他直接提供了可选择的本地进程,以及需要输入账号密码的远程进程,而不是像前面使用jmap,和jstack分析的时候,需要我们先用jps列出进程pid,我们选择本地应用 pid2976连接成功后,进入jconsole的主...原创 2019-08-15 13:27:02 · 295 阅读 · 0 评论 -
JVM基础到实战09-图形化分析工具jvisualvm
jvisualvm是jdk1.6之后提供的一个图形化的vm内存分析工具1.在IDEA中安装visualvm Launcher,方便我们启动项目的时候直接启动jvisualvm程序。在插件中搜索visualvm Launcher,如果没有,就去插件仓库搜索安装,然后重启IDEA2.配置visualVM3.应用配置退到主界面会发现,上方出现两个带橘黄色图标的启动和debug按钮...原创 2019-08-15 13:39:19 · 344 阅读 · 0 评论