标签:
记在这里,便于测试。
$ java -version
java version "1.8.0_66"
OpenJDK Runtime Environment (Alibaba 8.0.0) (build 1.8.0_66-b60)
OpenJDK 64-Bit Server VM (Alibaba 8.0.0) (build 25.66-b60, mixed mode)
多租户JDK通过JVM的虚拟化/资源隔离的能力,支持容器的多租户,多个应用可以同时部署在同一个“多租户”容器而互相不受影响,以提高应该的部署密度,从而可以更大程度的提高资源利用率,降低单应用的部署成本(如果需要多租户支持,请联系JVM团队)。
CPU隔离
增加命令行选项//-XX:+TenantCpuThrottling//,用于开启针对单个租户的cpu配额功能。默认关闭,重启生效。
内存隔离
增加命令行选项//-XX:+TenantHeapThrottling//,用于开启针对单个租户的内存隔离、限制功能,目前该功能只支持G1垃圾回收策略。默认关闭,重启生效。
可以通过TenantConfiguration类设定每个租户使用的内存上限,当租户使用内存超过指定上限时,JVM会尝试触发Full GC来回收空间以满足该租户的内存限制,如果GC后仍无法满足,会在分配内存的线程中抛出OutOfMemoryError错误。
jcmd扩展
跟踪热点大方法, 应用根据方法跟踪信息,减少Method Size, 提高JIT的内联有效性,从而提高热点方法性能
获取异常丢失的StackTrace
大数组分配引起的GC问题
DirectMemory使用警告
GC问题辅助排查
JVM Crash Log增强
CMS Full GC 并行化
将闲置的Java Heap归还物理内存,提高内存的使用效率,提高应用部署密度
ParNew YGC优化
CRC32C
Native内存优化,用户应用透明
JNI 调用 优化,用户应用透明
JNI获取线程信息
JDK-8048556 - [ref: 5]
JDK-8139549 - [ref: 6]
Symbol Translation Service
NOTES: 如果需要,请联系JVM团队
跟踪G1大对象分配,提升G1使用的性能
spring 升级到 3.2.9 以上(如果要用jdk8完整新特性,建议spring升到4.x,servlet升到3.x)
webx应用如果想用spring4,建议webx 升级,参考:http://gitlab.alibaba-inc.com/middleware-container/citrus/wikis/webx-spring4-jdk8
如果有org.projectlombok:lombok, 升级到1.14.X,不要升级到1.16.x
如果有org.eclipse.jdt.core.compiler:ecj, 升级到4.4.2及以上
目前集团很多二方包依赖spring2.x,二方包很容易把spring2.x引进来。排除spring2.x,强烈建议利用这个空包来排除。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>999-not-exist</version>
</dependency>
启动参数调整:
jdk8去除了Perm区,所以:PermSize改为MetaspaceSize,MaxPermSize改为MaxMetaspaceSize。
另外以下参数在jdk8已经不支持,会报警告,建议删除:UseCMSCompactAtFullCollection和CMSFullGCsBeforeCompaction
标签:
原文地址:http://blog.csdn.net/axman/article/details/50600144