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

营销型网站建设极速建站网络游戏推广怎么做

营销型网站建设极速建站,网络游戏推广怎么做,app营销策略都有哪些,微信h5在哪个网站做文章目录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.hrbkazy.com/news/37769.html

相关文章:

  • 青岛网站建设建议青岛seo整站优化公司
  • 炫酷手机网站模板环球网疫情最新动态
  • 淄博头条新闻今天西安seo推广优化
  • 南通建筑人才网长沙百度快速优化排名
  • 网站备案申请百度网盟推广官方网站
  • 17Z一起做网站广州站百度投诉中心
  • 做网站从哪里找货源江东seo做关键词优化
  • 电商关键字优化有没有免费的seo网站
  • 揭阳做网站公司如何建造一个网站
  • 化妆品购物网站建设目的网络营销的模式有哪些?
  • 在百度怎么建立自己的网站网站建设合同模板
  • 网站制作步骤检测网站是否安全
  • 北京网站备案注销百度经验官网入口
  • 重庆建设工程信息网官网平台seo还有用吗
  • 南通网站建营销号
  • 优秀网站设计赏析怎么写百度登录个人中心
  • 做网站需要公司吗搜索引擎地址
  • 国家工信部网站域名查询系统seo知识是什么意思
  • 可以转app的网站怎么做的上海有哪些优化网站推广公司
  • 网站建设 指标优化大师使用心得
  • 最火的网站开发框架怎样做一个网站平台
  • 做网站如何处理并发问题seo软件开发
  • 吐鲁番网站建设长沙seo结算
  • 合肥比较好的网站建设公司国际新闻最新消息今天
  • 上海门户网站制作seo外包如何
  • 学校网站登录入口西安百度关键词包年
  • 国外买域名的网站seo基础入门视频教程
  • wordpress是英文的怎么办惠州百度seo排名
  • 企业网站如何更新备案信息推广app网站
  • 免费网站源码下载国际最新新闻