Jvm优化

1.JVM的构成
	JVM虚拟机主要是由三个部分构成,分别是类加载子系统、运行时数据区、执行引擎。
	

类记载子系统
	Java虚拟机把描述类的数据从Class文件加载到内存民兵队数据进行校验、转换解析和初始化,最终形成可以
	被虚拟机直接使用的Java类型。
	
运行时数据区
	Java虚拟机在执行Java程序的过程中会把它锁管理的内存划分为若干个不同的数据区域。
	这些区域有各自的用途,一级创建和销毁的时间,有的区域随着虚拟机进程的启动而直存在,有些区域则是
	依赖用户线程的启动和结束而建立和销毁。
	程序计数器:记录没一个线程的执行位置
	javap -c Test1.class >t1.txt,将class的汇编编码输出到t1.txt中,其中code的编号对应的是
	计数器的编号。
	栈:描述的是java方法执行的线程内存模型,一个方法对应一个栈帧,一个栈帧中,局部变量表,动态链接,
	方法出口,虚拟机的栈和线程是同步的。
	动态链接:java中调用redis服务
	操作数栈:
	局部变量表:		
	Java堆区:java堆是被线程共享的一块区域。
	堆内存中分为年轻代、老年代、永久区。
	
2.jvm的运行参数

标准参数java -version  java -Dstr/-Dserver.port
-X参数  -Xms
-XX参数(使用率高)
-XX:newSize年轻代大小
	布尔类型
	-XX:+DIsableExplicitGC手动调用gc操作
	非布尔类型

-Xms与-Xmx分别是设置jvm的堆内存的初始大小和最大大小。
-Xmx2048m= -XX:MaxHeapSize,设置jvm最大对内存为2048M
-Xmx512m = -XX:InitialHeapSize,设置jvm处室对内存大小为512m
一般设置为一样大,适当利用服务器资源,能让程序运行的更快,

3.查看正在运行的程序的参数
jps -l查看运行程序的编号
jinfo -flags 10108查看10108对应的启动参数
jinfo -flag MaxHeapSize 10108查看具体某一个参数
jstat查看堆内存各部分的使用量,占用的空间,运行的时间
jstat -class 10108
jstat -gc 10108查看垃圾回收器的情况

4.内存溢出的定位与分析:不断将数据写入一个集合中,出现了死循环,读取超大的文件等,都可能造成内存溢出。
内存溢出:程序在申请内存时,没有足够的内存空间供其使用,出现out of memory
内存泄露:程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,内存泄露堆积后果很严
重
,无论多少内存,迟早会被占光。
-XX:+HeapDumpOnOutOfMemoryError
指定路径
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=F:\test.dump.hprof
在mat中分析定位问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值