JVM
jvm的详细学习和相关的面试题
W墨眉W
这个作者很懒,什么都没留下…
展开
-
JVM监控命令之——JSTAT
1、简介JSTAT即JVM Statistics Monitoring Tool,JVM统计数据监控工具,可以用来查看JVM中GC、类加载等信息[option] : 操作参数 LVMID : 本地虚拟机进程ID [interval] : 连续输出的时间间隔 [count] : 连续输出的次数(默认一直打印)参数解析:Option Displays… class class loader的行为统计。Statistics on the behavior of the cl原创 2020-07-29 11:23:09 · 324 阅读 · 0 评论 -
JVM监控命令之——JSTACK
1、简介 stack trace,用于打印java线程的调用栈(执行栈,瞬时),包括class全名、方法名、行号等,如果指定-m还会打印native帧;不过对于实际工作情况,我们通常用于追踪多线程任务调度过程、对象lock(或者死锁)、并发同步阻塞、IO线程执行状态等;比如排查某个线程为何wait(假死,阻塞等)。 也即是用来查看JVM线程快照的命令,线程快照是当前JVM线程正在执行的方法堆栈集合。使用jstack命令可以定位线程出现长时间卡顿的原因,例如死锁,死循环等。jsta...原创 2020-07-29 11:08:49 · 387 阅读 · 0 评论 -
JVM监控命令之——JINFO
1、简介 jinfo命令可以查看JVM参数并动态修改部分JVM参数。 格式:-flag <name> 打印指定名称的参数 -flag [+|-]<name> 打开或关闭参数 -flag <name>=<value> 设置参数 -flags 打印当前指定java进程中已经设定的所有JVM参数信息 -sysprops 打印当前java进程中设定的系统环境参数 <no option> 打印上面两个选项2、操...原创 2020-07-29 10:52:58 · 285 阅读 · 1 评论 -
JVM监控命令之——JPS
1、简介 jps是用于查看有权访问的hotspot虚拟机的进程,当未指定hostid时,默认查看本机jvm进程,也可查看指定的hostid机器上的jvm进程,此时hostid所指机器必须开启jstatd服务。 jps可以列出jvm进程lvmid、主类类名、main函数参数、jvm参数和jar名称等信息。格式:jps [options] [hostid]参数解析:-l : 输出主类全名或jar路径 -q : 只输出LVMID -m : 输出JVM启动时传递给main()的...原创 2020-07-29 10:21:41 · 460 阅读 · 0 评论 -
JVM中垃圾收集之复制算法
一、复制算法的一般过程将内存平均分成A、B两块:1. 新生对象被分配到A块中未使用的内存当中。当A块的内存用完了, 把A块的存活对象对象复制到B块。2. 清理A块所有对象。3. 新生对象被分配的B块中未使用的内存当中。当B块的内存用完了, 把B块的存活对象对象复制到A块。4. 清理B块所有对象。5. goto 1。优点:简单高效。缺点:内存代价高,有效内存为占用...原创 2020-03-26 09:38:45 · 443 阅读 · 0 评论 -
JVM中GC方法
1、GC的三种收集方法(1)标记-清除算法(Mark-Sweep)从根节点开始标记所有可达对象,其余没有标记的即为垃圾对象,执行清除。但回收后的空间是不连续的。标记-清除算法采用从根集合进行扫描,对存活的对象标记,标记完毕后,在扫描整个空间中未被标记的对象,进行回收。标记-清除算法不需要进行对象的移动,并且仅对不存活的对象进行处理,在存活对象比较多的情况下极为高效,但由于标记-清除算法直接...原创 2020-03-26 09:32:33 · 2281 阅读 · 0 评论 -
Java中类加载的双亲委派模型
1、类加载器的类型类加载器按照层次,从顶层到底层,分为以下三种:(1)启动类加载器(BootstrapClassLoader) 这个类加载器负责将存放在JAVA_HOME/lib下的,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的类库加载到虚拟机内存中。启动类加载器无法被Java程序直接引用。(2)扩展类加载器(ExtensionClassL...原创 2020-03-25 22:41:06 · 129 阅读 · 0 评论 -
Java中GC的两种判定算法
1、引用计数法在JDK1.2之前,使用的是引用计数器算法,即当这个类被加载到内存之后,就会产生方法区,堆栈、程序计数器等一系列信息,当创建对象的时候,为这个对象在堆栈空间中分配内存,同时会产生一个引用计数器,设置引用计数器为1,当有新的引用时,引用计数器继续+1,而当其中一个引用销毁时,引用计数器-1,当引用计数器减为0的时候,标志着这个对象已经没有引用了,可以回收了!但是这样会有一个问题:当...原创 2020-03-25 22:32:12 · 521 阅读 · 0 评论