![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 92
lai赖
对于技术充满着好奇与执着,一个初出茅庐的IT男
展开
-
JVM调优之参数介绍
JVM调优之参数介绍jvm参数类型有3种,分别是:标准参数、-X参数(非标准参数)以及-XX参数。1、标准参数例如:-help、-version等[root@node01 workspace]# java -versionjava version "1.8.0_221"Java(TM) SE Runtime Environment (build 1.8.0_221-b11)Java ...原创 2019-07-29 12:04:12 · 131 阅读 · 0 评论 -
实战:死锁问题
通过jstack分析死锁情况1、首先写一个死锁的程序,来造成死锁public class TestDeadLock{ private static Object obj1 = new Object(); private static Object obj2 = new Object(); public static void main(String[] args) ...原创 2019-07-31 11:44:51 · 293 阅读 · 0 评论 -
JVM垃圾回收(五)
5、可视化GC日志分析工具5.1、GC日志输出参数-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGCTimeStamps 输入GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps 输入GC的时间戳(以日期形式,如:2013-05-04T21:53:59.234+0800)-XX:+Pri...原创 2019-08-05 10:18:08 · 110 阅读 · 0 评论 -
JVM垃圾回收(四)
4、G1垃圾收集器(重点)G1垃圾收集器是jdk1.7中正式使用的全新的垃圾收集器,oracle官方计划在jdk9中将G1垃圾收集器变成默认的垃圾收集器,以替代CMS。G1的设计原则就是简化JVM的性能调优,开发人员只需要简单的散步即可完成调优。开启G1垃圾收集器设置堆的最大内存设置最大的停顿时间G1中提供了三种垃圾回收模式,Yong GC、Mixed GC和Full GC,在不...原创 2019-08-05 09:55:46 · 280 阅读 · 0 评论 -
JVM垃圾回收(一)
垃圾回收1、什么是垃圾回收程序运行必然需要申请资源,无效的对象资源如果不及时处理就会一直占用内存资源,最终导致内存溢出,所以对内存资源的管理是非常重要的2、C/C++语言的垃圾回收 在C/C++语言中,没有垃圾回收机制,是通过new关键字申请内存资源,通过delete关键字释放内存资源。如果程序员在某些位置没有写delete进行释放,那么申请对象将一直占用内存资源,最终导致内存溢...原创 2019-08-01 17:53:50 · 176 阅读 · 1 评论 -
JVM字节码
JVM字节码1、通过javap命令查看class文件的字节码内容首先,看下面简单的代码:public class Test1 { public static void main(String[] args) { int a = 2; int b = 5; int c = b - a; System.out.println...原创 2019-08-06 15:48:46 · 234 阅读 · 0 评论 -
JVM垃圾回收(二)
垃圾收集器以及内存分配上一篇说了垃圾回收的算法,还需要有具体的实现,在JVM中,实现了多种垃圾收集器。包括:串行垃圾收集器、并行垃圾收集器、CMS(并发)垃圾收集器、G1垃圾收集器等。1、串行垃圾收集器串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用程序中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为STW(Stop-The-World)...原创 2019-08-02 12:29:56 · 98 阅读 · 0 评论 -
i++与++i的区别
关于i++和++i的区别,我们都知道,i++表示先回复再+1,++i表示,先+1再返回。那么,它的底层是怎么样的呢?编写测试代码:public class Test2 { public void method1() { int i = 1; int a = i++; System.out.println(a); } pub...原创 2019-08-06 16:24:40 · 323 阅读 · 0 评论 -
字符串拼接
在开发过程中,字符串拼接的使用时非常频繁的,常用的方式有三种:+号拼接:str + “456”StringBuilder拼接StringBUffer拼接StringBuffer是保证线程安全的,效率是比较低的,我们更多的使用场景是不会涉及到线程安全的问题的,所以更多的时候会选择StringBuilder,效率会高一些。那么问题来了,StringBuilder和“+”号拼接,哪个效率更高呢...原创 2019-08-06 16:55:50 · 255 阅读 · 0 评论 -
JVM调优之jstack的使用
jstack的使用1、线程的状态在java中,线程的状态一共被分为6种:初始态(NEW)创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态运行态(RUNNABLE)就绪态该状态下的线程已经获得执行所需要的所有资源,只要CPU分配执行权限就能运行所有就绪态的线程存放在就绪队列中运行态获得CPU执行权,正在执行的线程由于一个CPU同一...原创 2019-07-31 11:16:42 · 196 阅读 · 0 评论 -
JVM调优之内存情况分析
1、jhat分析dump文件通过上一篇文章,可以将jvm的内存dump到文件中,由于文件是二进制文件,不方便查看,因此,我们可以利用jhat工具来进行查看。用法:jhat -port <port> <file>实例:[root@node01 ~]# jhat -port 9999 dump.dat Reading from dump.dat...Dump fi...原创 2019-07-30 16:58:56 · 237 阅读 · 0 评论 -
JVM调优之jmap的使用
jmap的使用1、查看内存使用情况jmap -heap <进程号>示例:2、查看内存中对象数量及大小查看所有对象,包括活跃以及非活跃的jmap -histo <进程id> | more查看活跃对象jmap -histo:live <进程id> | more说明:字符说明BbyteCcharDdo...原创 2019-07-30 16:16:51 · 271 阅读 · 0 评论 -
JVM调优之-Server和-Client篇
JVM参数之-Server和-ClientJVM可以通过-Server和-Client设置运行参数.-Server参数与-Client参数的区别Server jvm的初始空间会大一些,默认使用的是并行垃圾回收器,启动慢,运行快Client jvm相对保守一些,初始空间会小一些,使用串行垃圾回收器,他的目标是为了让JVM的启动速度更快,但是运行速度会比Server jvm慢一些JVM在启...原创 2019-07-29 12:19:54 · 460 阅读 · 0 评论 -
JVM调优之-X参数
-X参数JVM的-X参数是非标准参数,在不同版本的JVM中,参数可能会有所不同,可以通过java -X查看非标准参数-Xint、-Xcomp与-Xmixed参数-Xint参数在解释模式(interpreted mode)下,-Xint标记会强制JVM执行所有的字节码,这当然会降低运行速度,通常低10倍或更多。-Xcomp参数-Xcomp参数与-Xint正好相反,JVM在第一次使用时...原创 2019-07-29 13:58:52 · 1710 阅读 · 0 评论 -
JVM调优之-XX参数
-XX参数-XX参数也是非标准参数,主要用于JVM的调优和debug操作-XX参数的使用有2中方式:boolean类型非boolean类型boolean类型格式:-XX:[+/-] <name> 表示开启或禁用<name>属性例如:-XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用System.gc()无效非...原创 2019-07-29 16:09:26 · 429 阅读 · 0 评论 -
JVM调优之-Xms与-Xmx参数
-Xms参数与-Xmx参数-Xms参数与-Xmx参数分别是设置JVM的堆内存的初始大小和最大大小-Xmx2048m 等价于-XX:MaxHeapSize=2048m,设置JVM最大堆内存为2048m-Xms512m 等价于-XX:InitialHeapSize=512m,设置JVM最初是堆内存为512m适当的调整JVM的内存大小,可以充分利用服务器资源,让程序跑的更快。...原创 2019-07-29 16:14:47 · 11084 阅读 · 2 评论 -
JVM调优之查看JVM的运行参数
查看JVM的运行参数1、运行java命令打印出运行参数 运行java命令时打印参数:需要添加-XX:+PrintFlagsFinal参数即可参数有boolean类型和数字类型,值的操作符是“=”或“:=”,分别代表默认值和被修改的值[root@node01 workspace]# java -XX:+PrintFlagsFinal Test2、查看正在运行的java进程的参数先...原创 2019-07-29 16:31:10 · 963 阅读 · 0 评论 -
JVM调优之JVM内存模型
JDK1.7的堆内存模型Young年轻区(代)Young区被划分为三部分,Eden区和两个大小严格相同的Survivor区。其中,Survivor区间中,某一时刻只有其中一个是被使用的,另一个留作垃圾收集时复制对象用的。在Eden区间变满的时候,GC就会将存活的对象转移到空闲的Survivor区中,在经过几次垃圾收集后,仍然存活于Survivor区的对象将被移动到Tenured区。...原创 2019-07-29 16:56:45 · 123 阅读 · 0 评论 -
JVM调优之jstat查看堆内存使用情况
jstat查看堆内存使用情况jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。格式:jstat [-命令选项] [进程号] [间隔时间/毫秒] [查询次数]查看class加载统计[root@node01 workspace]# jstat -class 4827Loaded Bytes Unloaded Bytes Time 1837 3417...原创 2019-07-29 17:24:27 · 4436 阅读 · 0 评论 -
JVM垃圾回收(三)
3、CMS垃圾收集器CMS全称Concurrent Mark Sweep,是一款并发的、使用标记-清除算法的垃圾回收期,该回收器是针对老年代垃圾回收的,通过参数-XX:UseConMarkSweepGC进行设置的初始化标记(CMS-inital-mark),标记root,会导致STW;并发标记(CMS-concurrent-mark),与用户线程同时运行;预处理(CMS-concu...原创 2019-08-02 15:51:03 · 158 阅读 · 0 评论 -
代码优化
代码优化1、尽可能使用局部变量调试方法时传递的参数以及在调用中创建临时变量都保存在栈中的速度较快,其他变量,如静态变量、实例变量等,都在堆中,速度较慢。另外栈中创建的变量,随着方法的运行结束,这些内容就没有,不需要额外的垃圾回收。2、尽量减少对变量的重复计算明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的。例如:for(int i = 0; i < list.s...原创 2019-08-06 17:33:00 · 288 阅读 · 0 评论