一名IT寻梦人

jvm

netstat -anlp | grep 3306 查询指定端口使用情况
sudo netstat -ap 查看所有的服务端口占用情况

通过进程id查看占用的端口 netstat -nap | grep 进程id
通过端口号查看占用的进程id netstat -nap | grep 端口号

ps aux | sort -k4,4nr | head -n 10 查看内存占用前10名的程序

jconsole:
-Djava.rmi.server.hostname=10.31.25.226
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=36554
-Dcom.sun.management.jmxremote.rmi.port=36517
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false evo-download.jar


java -jar -Xms256m -Xmx768m -Xss256k -XX:NewSize=64m -XX:MaxNewSize=384m -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128m -Djava.rmi.server.hostname=10.35.225.187 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=37164 -Dcom.sun.management.jmxremote.rmi.port=26154 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false evo-download.jar

 

CMS:

java -jar -Xmx512m -Xss256k
-XX:NewSize=64m -XX:MaxNewSize=170m
-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128m
-XX:-UseConcMarkSweepGC
-XX:+UseCMSCompactAtFullCollection
-XX:CMSInitiatingOccupancyFraction=70
-XX:+CMSParallelRemarkEnabled
-Djava.rmi.server.hostname=10.31.23.200 -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=29866 -Dcom.sun.management.jmxremote.rmi.port=29831
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
evo-download.jar

-Dcom.sun.management.jmxremote   添加远程连接 用于 jConsole等java监控工具

 

2. -XX:CMSInitiatingOccupancyFraction=70 和-XX:+UseCMSInitiatingOccupancyOnly

    这两个设置一般配合使用,一般用于『降低CMS GC频率或者增加频率、减少GC时长』的需求

   -XX:CMSInitiatingOccupancyFraction=70 是指设定CMS在对内存占用率达到70%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);

   -XX:+UseCMSInitiatingOccupancyOnly 只是用设f定的回收阈值(上面指定的70%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整.

3. -XX:+CMSScavengeBeforeRemark

   在CMS GC前启动一次ygc,目的在于减少old gen对ygc gen的引用,降低remark时的开销-----一般CMS的GC耗时 80%都在remark阶段

UseCMSCompactAtFullCollection 与 CMSFullGCsBeforeCompaction

 


独享锁是指该锁一次只能被一个线程所持有。 (ReentrantLock、 Synchronized)
这两种方式最大区别就是对于Synchronized来说,它是java语言的关键字,是原生语法层面的互斥,需要jvm实现。
而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成

便利性:很明显Synchronized的使用比较方便简洁,并且由编译器去保证锁的加锁和释放,而ReenTrantLock需要手工声明来加锁和释放锁,为了避免忘记手工释放锁造成死锁,所以最好在finally中声明释放锁。
锁的细粒度和灵活度:很明显ReenTrantLock优于Synchronized


springboot IOC容器 对象初始化 懒加载
Java单例模式(饿汉式,懒汉式)
redis 淘汰机制

 

posted on 2021-05-21 10:21  一名IT寻梦人  阅读(44)  评论(0编辑  收藏  举报

导航