1.通过调整InitatingHeapOccupancyPercent标志可以调整G1收集器,更频繁地启动后台垃圾收集线程
2如果有重组的cpu资源,可以考虑调整增加垃圾收集线程数
3.减少G1MixedGCCountTarget参数可以避免晋升失败.
4.高级调优
4.1晋升阈值也是JVM在动态的计算,持续的计算.在对象被移动到老年代前,需要在S区域之间来回移动多个GC周期,这个问题就是阈值,TH收集器和G1默认是7,CMS是6,最大是15.
4.2观察晋升信息能够帮助我们做出最好的决定
4.3
4.4
增大MaxTenuringThreshold让对象在s区间停留更多的时间
4.5有的情况下,我们需要避免对象晋升到老年代,调整晋阈值或者S空间大小可以避免对象晋升到老年代.
4.6 G1垃圾收集器在收集巨型对象时候非常效果明显
1.多线程方面
1.1如果访问的是不存在竞争的资源,那么基于CAS的保护要稍快与传统的同步,
1.2如果访问的资源存在轻度或适度的竞争,那么基于CAS的保护要快于传统的同步.
1.3随着所访问的资源的竞争越来越剧烈,在某一时刻,传统的同步就会成为更高效的选择.在实践中,这实惠出现在运行着大量线程的非常大型的机器上
1.4最后还要对代码所运行的真实生产环境做大量的测试
调节线程栈大小,
32位是128KB 64位是256KB
1.在32位的JVM上,进程所占空间达到了4GB的最大值,
2.系统实际已经耗尽了虚拟内存
9.4.2 偏向锁
偏向锁的背后理论依据是:如果一个线程最近用到了某个梭,那么线程下一次执行由同一把锁保护的代码所需的数据可能仍然保存在处理器的缓存中.如果给这个线程优先获得这把锁的权利,缓存命中率可能就会增加。
偏向锁是默认开启的。禁用偏向锁会稍微改进性能。
9.4.3自旋锁
Web性能调优
1.减少输出,可以加快Web页面返回到浏览器的熟读
2.减少空格。
3.合并css和js资源
4.压缩输出
5.JSP的会损伤服务器的性能/。
Http会话状态,
1.1 会话状态的内存占用.堆中存活的数据越多,单次GC所用的时间也会越长.
1.2 JNI并不能解决性能问题,Java调用原生代码不是很快,
1.3Java的try catch会相对消耗性能,
1.4 使用过滤器可以提升迭代的性能
完结 Java性能权威指南