JVM
文章平均质量分 92
番茄编程
学习 思考 总结 进步
展开
-
Java程序导致服务器CPU占用率过高的问题排除过程
1. CPU占用过高问题定位step1:定位问题进程使用top命令查看资源占用情况,找占用大量的CPU资源的进程的pid;step2:定位问题线程使用ps -mp [ pid ] -o THREAD,tid,time命令查看该进程的线程情况,发现该进程的多个线程占用率很高step3:查看问题线程堆栈(1) 挑选指定TID的线程,查看该线程的堆栈情况,先将线程id转为16进制,使用printf “%x\n” tid命令进行转换(2) 再使用jstack命令打印线程堆栈信息,命...原创 2020-05-21 20:25:22 · 434 阅读 · 0 评论 -
JVM之守护线程
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾...原创 2018-05-17 14:43:05 · 1498 阅读 · 0 评论 -
JVM的工作原理分析
1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构也是很有必要的。 说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示: Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个...原创 2018-05-17 16:08:05 · 138 阅读 · 0 评论 -
JVM调优总结(一)基本概念
数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:类类型,接口...转载 2018-05-17 18:21:24 · 243 阅读 · 0 评论 -
JVM调优总结(二)基本垃圾回收算法
按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同...转载 2018-05-17 18:35:56 · 141 阅读 · 0 评论 -
JVM调优总结(三)垃圾回收面临的问题
如何区分垃圾上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地方,所...转载 2018-05-17 18:53:55 · 122 阅读 · 0 评论 -
JVM调优总结(四)分代垃圾回收
为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命...转载 2018-05-18 15:19:41 · 144 阅读 · 0 评论