JVM 性能调优方法?
JVM性能调优有很多设置,这个参考JVM参数即可.
主要调优的目的:
控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为
控制JVM堆栈大小.一般来说,JVM在内存分配上不需要你修改,(举例)但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小.同时,还要需要控制总的JVM大小避免内存溢出
控制JVM线程的内存分配.如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果。
JVM有哪些方式进行调优?
jvm调优的目的:减少gc的次数与缩短gc时间。
从这两个维度去进行优化。
次数:增大jvm内存空间、长期持有对象直接进入老年代等。。。
时间:增强物理机的性能 or 采用更牛的gc收集器
JVM调优,S区太小导致FGC频繁
Java的jvm的GC机制应该是不用手工控制的,即使是手工控制也没有什么意义。不知道你遇到了什么问题,还是只是在研究JVM的回收机制。如果是遇到了问题(内存泄漏溢出)需要检查代码设计和结构,如果是研究JVM的回收机制可以研究下JVM的内存管理。
jvm调优如何做?
Jvm调优依次参考如下
如果没有必要,请不要做调优
如果没有必要,请不要做调优。没有万能的调优,只有根据使用场景选择合适的手段,初始默认指定堆大小,元空间大小(jdk8)即可
确认性能问题由JVM再考虑调优,如fullGC频繁,GC时间较长,内存使用不正常,OOM等。开启JVM监控,记录GC日志,分析GC情况
JVM调优的目标是减少/避免老年代GC
对于追求响应时间的如web系统使用并发垃圾回收器(jdk8开启G1,低版本使用CMS)
根据JVM内存使用情况,可以考虑手动设置年轻代大小,survivor区大小,减少/避免垃圾进入老年代(注意jdk8默认开启自适应调节,需关闭)
影响GC时间的还有GC线程数等等,需要结合GC日志分析GC过程可能存在的问题
jvm优化.有哪些jvm参数?用过哪些jvm调优工具
参考如下内容:
JVM常用调试参数:
–verbose:gc在虚拟机发生内存回收时在输出设备显示信息
-Xloggc:filename把GC相关日志信息记录到文件以便分析
-XX:-HeapDumpOnOutOfMemoryError当首次遭遇OOM时导出此时堆中相关信息
-XX:OnError="cmdargs;cmd args" 出现致命ERROR之后运行自定义命令
-XX:-PrintClassHistogram遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同
-XX:-PrintConcurrentLocks遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同
-XX:-PrintGC每次GC时打印相关信息
-XX:-PrintGCDetails每次GC时打印详细信息
-XX:-PrintGCTimeStamps打印每次GC的时间戳
-XX:+PrintGCApplicationStoppedTime打印垃圾回收期间程序暂停的时间
-XX:+PrintHeapAtGC打印GC前后的详细堆栈信息
-XX:+PrintTenuringDistribution查看每次minor GC后新的存活周期的阈值,即在年轻代survivor中的复制次数.
-XX:-TraceClassLoading跟踪类的加载信息
-XX:-TraceClassUnloading跟踪类的卸载信息
-XX:-TraceLoaderConstraints跟踪类加载器约束的相关信息
-XX:ErrorFile=/opt/tomcat/bin/hs_error_%p.log Crash日志
jvm性能调优都做了什么
JVM性能调优有很多设置,这个参考JVM参数即可.
主要调优的目的:
控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为
控制JVM堆栈大小.一般来说,JVM在内存分配上不需要你修改,(举例)但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小.同时,还要需要控制总的JVM大小避免内存溢出
控制JVM线程的内存分配.如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果
有人懂JVM调优吗
百度 bing.com, so.360.cn 等等等
查 JVM调优
你应该能找到1000篇关于JVM调优 的文章