当前位置: 首页 > news >正文

网站公司做的网站有最字设计专业哪个学校好

网站公司做的网站有最字,设计专业哪个学校好,流量神器,深圳公司网站建设大约多少钱文章目录1、JVM参数有哪些?1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些?2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…

文章目录

  • 1、JVM参数有哪些?
    • 1.1、 标准参数
    • 1.2、-X参数
    • 1.3、 -XX参数
    • 1.4、 其他参数
    • 1.5、 查看参数
    • 1.6、 设置参数的常见方式
    • 1.7、 常用参数含义
  • 2、JVM常用命令有哪些?
    • 2.1、jps
    • 2.2、jinfo
    • 2.3、jstat
    • 2.4、jstack
    • 2.5、jmap
  • 3、你会估算GC频率吗?
  • 4、 内存溢出(OOM)怎么解决?
    • 4.1、大并发[秒杀]
    • 4.2、内存泄露导致内存溢出

1、JVM参数有哪些?

1.1、 标准参数

-version
-help
-server
-cp

image.png

1.2、-X参数

-Xint     解释执行
-Xcomp    第一次使用就编译成本地代码
-Xmixed   混合模式,JVM自己来决定

image.png

1.3、 -XX参数

使用得最多的参数类型,主要用于JVM调优和Debug

a.Boolean类型
格式:-XX:[+-]<name>            +或-表示启用或者禁用name属性
比如:-XX:+UseConcMarkSweepGC   表示启用CMS类型的垃圾回收器-XX:+UseG1GC              表示启用G1类型的垃圾回收器
b.非Boolean类型
格式:-XX<name>=<value>表示name属性的值是value
比如:-XX:MaxGCPauseMillis=500   

1.4、 其他参数

这块也相当于是-XX类型的参数

-Xms1000M等价于-XX:InitialHeapSize=1000M
-Xmx1000M等价于-XX:MaxHeapSize=1000M
-Xss100等价于-XX:ThreadStackSize=100

1.5、 查看参数

 java -XX:+PrintFlagsFinal -version > flags.txt

image.png
image.png

值得注意的是"=“表示默认值,”:="表示被用户或JVM修改后的值
一般要设置参数,可以先查看一下当前参数是什么,然后进行修改

1.6、 设置参数的常见方式

  • 开发工具中设置比如IDEA,eclipse
  • 运行jar包的时候:java -XX:+UseG1GC xxx.jar
  • web容器比如tomcat,可以在脚本中的进行设置
  • 通过jinfo实时调整某个java进程的参数(参数只有被标记为manageable的flags可以被实时修改)

1.7、 常用参数含义

参数含义说明
-XX:CICompilerCount=3最大并行编译数如果设置大于1,虽然编译速度会提高,但是同样影响系统稳定性,会增加JVM崩溃的可能
-XX:InitialHeapSize=100M初始化堆大小简写-Xms100M
-XX:MaxHeapSize=100M最大堆大小简写-Xms100M
-XX:NewSize=20M设置年轻代的大小
-XX:MaxNewSize=50M年轻代最大大小
-XX:OldSize=50M设置老年代大小
-XX:MetaspaceSize=50M设置方法区大小
-XX:MaxMetaspaceSize=50M方法区最大大小
-XX:+UseParallelGC使用UseParallelGC新生代,吞吐量优先
-XX:+UseParallelOldGC使用UseParallelOldGC老年代,吞吐量优先
-XX:+UseConcMarkSweepGC使用CMS老年代,停顿时间优先
-XX:+UseG1GC使用G1GC新生代,老年代,停顿时间优先
-XX:NewRatio新老生代的比值比如-XX:Ratio=4,则表示新生代:老年代=1:4,也就是新生代占整个堆内存的1/5
-XX:SurvivorRatio两个S区和Eden区的比值比如-XX:SurvivorRatio=8,也就是(S0+S1):Eden=2:8,也就是一个S占整个新生代的1/10
-XX:+HeapDumpOnOutOfMemoryError启动堆内存溢出打印当JVM堆内存发生溢出时,也就是OOM,自动生成dump文件
-XX:HeapDumpPath=heap.hprof指定堆内存溢出打印目录表示在当前目录生成一个heap.hprof文件
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:g1-gc.log打印出GC日志可以使用不同的垃圾收集器,对比查看GC情况
-Xss128k设置每个线程的堆栈大小经验值是3000-5000最佳
-XX:MaxTenuringThreshold=6提升年老代的最大临界值默认值为 15
-XX:InitiatingHeapOccupancyPercent启动并发GC周期时堆内存使用占比G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比. 值为 0 则表示”一直执行GC循环”. 默认值为 45.
-XX:G1HeapWastePercent允许的浪费堆空间的占比默认是10%,如果并发标记可回收的空间小于10%,则不会触发MixedGC。
-XX:MaxGCPauseMillis=200msG1最大停顿时间暂停时间不能太小,太小的话就会导致出现G1跟不上垃圾产生的速度。最终退化成Full GC。所以对这个参数的调优是一个持续的过程,逐步调整到最佳状态。
-XX:ConcGCThreads=n并发垃圾收集器使用的线程数量默认值随JVM运行的平台不同而不同
-XX:G1MixedGCLiveThresholdPercent=65混合垃圾回收周期中要包括的旧区域设置占用率阈值默认占用率为 65%
-XX:G1MixedGCCountTarget=8设置标记周期完成后,对存活数据上限为 G1MixedGCLIveThresholdPercent 的旧区域执行混合垃圾回收的目标次数默认8次混合垃圾回收,混合回收的目标是要控制在此目标次数以内
-XX:G1OldCSetRegionThresholdPercent=1描述Mixed GC时,Old Region被加入到CSet中默认情况下,G1只把10%的Old Region加入到CSet中

2、JVM常用命令有哪些?

2.1、jps

查看java进程

image.png

2.2、jinfo

实时查看和调整JVM配置参数

# 查看某个java进程属性的值
jinfo -flag MaxHeapSize PID 
jinfo -flag UseG1GC PID

image.png

# 参数只有被标记为manageable的flags可以被实时修改
jinfo -flag [+|-] PID
jinfo -flag <name>=<value> PID
# 查看曾经赋过值的一些参数
jinfo -flags PID

image.png

2.3、jstat

查看虚拟机性能统计信息

# 查看类装载信息 每1000毫秒输出一次,共输出10次
jstat -class PID 1000 10 

image.png

# 查看垃圾收集信息
jstat -gc PID 1000 10

image.png

2.4、jstack

查看线程堆栈信息

jstack PID

image.png

排查死锁案例

//运行主类
public class DeadLockDemo
{public static void main(String[] args){DeadLock d1=new DeadLock(true);DeadLock d2=new DeadLock(false);Thread t1=new Thread(d1);Thread t2=new Thread(d2);t1.start();t2.start();}
}
//定义锁对象
class MyLock{public static Object obj1=new Object();public static Object obj2=new Object();
}
//死锁代码
class DeadLock implements Runnable{private boolean flag;DeadLock(boolean flag){this.flag=flag;}public void run() {if(flag) {while(true) {synchronized(MyLock.obj1) {System.out.println(Thread.currentThread().getName()+"----if获得obj1锁");synchronized(MyLock.obj2) {System.out.println(Thread.currentThread().getName()+"----if获得obj2锁");}}}}else {while(true){synchronized(MyLock.obj2) {System.out.println(Thread.currentThread().getName()+"----否则获得obj2锁");synchronized(MyLock.obj1) {System.out.println(Thread.currentThread().getName()+"----否则获得obj1锁");}}}}}
}

jstack分析
把打印信息拉到最后可以发现1个死锁信息。
image.png

2.5、jmap

# 打印出堆内存相关信息
jmap -heap PID

image.png

# 生成堆快照
jmap -dump:format=b,file=heap.hprof PID

image.png

一般在开发中,JVM参数可以加上下面两句,这样内存溢出时,会自动dump出该文件

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof

3、你会估算GC频率吗?

正常情况我们应该根据我们的系统来进行一个内存的估算,这个我们可以在测试环境进行测试,最开始可以将内存设置的大一些,比如4G这样,当然这也可以根据业务系统估算来的。

比如从数据库获取一条数据占用128个字节,需要获取1000条数据,那么一次读取到内存的大小就是((128 B/1024 Kb/1024M)* 1000 = 0.122M,那么我们程序可能需要并发读取,比如每秒读取100次,那么内存占用就是0.122100 = 12.2M,如果堆内存设置1个G,那么年轻代大小大约就是333M,那么333M*80%/12.2M =21.84s,也就是说我们的程序几乎每分钟进行两到三次youngGC。这样可以让我们对系统有一个大致的估算。

4、 内存溢出(OOM)怎么解决?

发生内存溢出一般会有两个原因:

  • 内存不够用:大并发情况下
  • 代码问题:内存泄露导致内存溢出

4.1、大并发[秒杀]

缓存、CDN、集群+负载均衡、限流等方式解决

4.2、内存泄露导致内存溢出

  • jstack查看线程情况,有没有死锁或者IO阻塞的情况,查找可能出现问题的类名或等待时间最长的进程号。

    jstack PID
    
  • 查看堆内存的使用,获取到jvm.hprof文件,上传到指定的工具分析,比如heaphero.io

    jmap -heap PID
    
http://www.yayakq.cn/news/733324/

相关文章:

  • 网站 制作价格更加精准高效的措施
  • 门户网站做啥购买网站做网页游戏
  • 北京天津网站设计制作多少钱台州做网站优化
  • 对网站开发的理解500字织梦cms建设企业网站
  • 商丘网站制作方案seo流量工具
  • 网站代理浏览器7ui软件哪个最好用
  • 国外的网站服务商中文网站建设哪家好
  • 福建老区建设网站建一个网站的手机电脑版
  • 怎么成立个人网站网站建设合同印花税税率
  • 杭州网站设计精选柚v米科技杭州酒店网站设计公司推荐
  • 网站建设论文的研究方法wordpress主题hestia
  • 一级a做爰片免费视频网站wordpress 免费电商主题
  • 做 爱 网站视频在线做网站 自动生成手机版
  • 外贸网站建设需要注意事项西峰网
  • 宝塔搭建本地网站外贸工作上班一般都干嘛
  • 苏州网站建设工作室建站行业分析
  • 漯河网站优化网页制作工具可以发布网站吗
  • 情人节网页 wordpress十堰seo优化报价
  • 网页设计网站模板网站建设网页模板优秀的h5案例
  • 网站链接做二维码二级域名怎么解析
  • 信阳网站建设招聘北海网站开发
  • 彩票黑网站是怎么做的城阳网站制作
  • 深圳网站建设企业关键词seo公司推荐
  • dede网站模版腾达建设网站
  • 建设隔离变压器移动网站国际军事新闻在哪看
  • 国内图片素材网站高端食品品牌排行榜前十名
  • 网站整体色调几级分销是合法的
  • 寻找外贸客户的网站wordpress 引号转义
  • 宿迁网站建设报价如何查网站域名备案信息
  • 做网站的复式照片海会网络建设网站