各部分比例不良设置会导致什么后果
1)新生代设置过小
一是新生代GC次数非常频繁,增大系统消耗;二是导致大对象直接进入旧生代,占据了旧生代剩余空间,诱发Full GC
2)新生代设置过大
一是新生代设置过大会导致旧生代过小(堆总量一定),从而诱发Full GC;二是新生代GC耗时大幅度增加
一般说来新生代占整个堆1/3比较合适
3)Survivor设置过小
导致对象从eden直接到达旧生代,降低了在新生代的存活时间
4)Survivor设置过大
导致eden过小,增加了GC频率
另外,通过-XX:MaxTenuringThreshold=n来控制新生代存活时间,尽量让对象在新生代被回收
JVM提供两种较为简单的GC策略的设置方式
1)吞吐量优先
JVM以吞吐量为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,来达到吞吐量指标。这个值可由-XX:GCTimeRatio=n来设置
2)暂停时间优先
JVM以暂停时间为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,尽量保证每次GC造成的应用停止时间都在指定的数值范围内完成。这个值可由-XX:MaxGCPauseRatio=n来设置
最后汇总一下JVM常见配置
堆设置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久代大小
收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
分享到:
相关推荐
Java作为一门广泛使用的编程语言,其面试题涵盖了基础语法、面向对象、集合框架、多线程、网络编程、异常处理、JVM、设计模式、数据库交互、Spring框架等多个方面。以下是对这些知识点的详细解析: 1. **Java基础**...
- 内存管理:理解栈和堆的区别,垃圾回收机制,了解JVM内存模型。 - 数据类型:深入理解基本数据类型和引用数据类型,包括自动装箱拆箱。 - 流程控制:熟练掌握if、switch、for、while等控制结构。 - 数组与集合...
- 调优参数:-Xms, -Xmx, -XX:NewRatio, -XX:SurvivorRatio等。 5. **设计模式**: - 创建型模式:单例、工厂、抽象工厂、建造者、原型。 - 结构型模式:适配器、装饰器、代理、桥接、组合、外观、享元。 - ...
- 调优:JVM参数设置、内存分析工具(MAT、VisualVM)的使用。 5. **网络编程**: - TCP与UDP的区别:面向连接与无连接、可靠传输与不可靠传输。 - Socket编程:服务器端与客户端的建立连接、数据交换。 - HTTP...
- 性能优化:JVM参数调整,内存泄漏检测,CPU和GC日志分析。 这些只是Java面试中可能涉及的部分知识点,每个领域都有更深入的内容值得探讨。为了准备面试,理解并熟练掌握这些概念至关重要。此外,熟悉实际项目...
- 参数调优:JVM启动参数,如-Xms, -Xmx, -XX:NewRatio等。 - 类加载机制:双亲委派模型,类加载过程。 - 方法区与 PermGen/OOM问题。 - 类加载器:Bootstrap、Extension、App和自定义加载器。 8. **设计模式**...
- 调优:JVM参数设置,性能监控工具(VisualVM、JConsole)。 5. **IO/NIO**: - 流的概念:字节流与字符流,输入流与输出流,缓冲流,转换流。 - NIO(New IO):非阻塞I/O,选择器,通道,缓冲区。 6. **网络...
- 参数调优:如-Xms、-Xmx、-XX:NewRatio、-XX:SurvivorRatio等参数的设置。 7. **数据库操作** - SQL基础:查询、增删改查语句,了解JOIN、子查询、存储过程。 - JDBC操作:连接数据库、执行SQL、结果集处理等...
- **JVM内存模型**:堆内存、栈内存、方法区等区域的划分和调整。 - **JVM参数调优**:如-Xms、-Xmx、-XX:NewRatio、-XX:SurvivorRatio等。 9. **设计模式**: - **23种设计模式**:单例、工厂、装饰、代理、...
1. 参数调整:了解常用的JVM调优参数,如-Xms、-Xmx、-XX:MaxHeapFreeRatio等。 2. 性能监控:使用JConsole、VisualVM等工具进行性能监控。 3. 调优实践:分析内存、CPU、GC日志,找出性能瓶颈并优化。 以上就是...
- 内存管理:垃圾回收机制,JVM内存模型(堆、栈、方法区)。 - 数据类型:原始类型与引用类型的区别,自动装箱与拆箱。 - 流程控制:循环、条件语句、异常处理。 - 集合框架:List、Set、Map接口及其实现类的...
- 内存调优:探讨堆内存、栈内存、方法区的调整策略,以及如何避免内存泄漏和内存溢出。 以上是Java常见笔试面试题目所涵盖的主要知识点,通过深入学习和实践,可以提高Java程序员的专业技能和面试竞争力。在面试...
- 调优:学习JVM参数调整,提高应用性能。 6. **多线程.xmind** - 线程的创建和管理:使用Thread类和Runnable接口创建线程,了解同步机制如synchronized、wait/notify、Lock等。 - 死锁、活锁和饥饿:理解这些...
面试中,Java开发者经常被问及各种技术问题,包括但不限于语言基础、数据结构、算法、多线程、并发、设计模式、JVM内存管理以及框架应用等。本资料集主要针对这些Java面试的核心知识点进行讲解。 1. **Java语言基础...
- 内存调优:理解堆内存参数(Xms、Xmx、NewRatio等),以及垃圾回收参数的调整。 10. **框架与技术**: - Spring框架:理解依赖注入(DI)、AOP、Spring Boot、Spring Cloud等相关概念。 - MyBatis:了解动态...
10. **JVM优化**:了解JVM参数调优,如何分析和解决内存泄漏、性能瓶颈等问题。 11. **Spring框架**:熟悉Spring的基本原理,如依赖注入(DI)、AOP(面向切面编程)、Spring Boot、Spring Cloud等相关知识。 12. ...
JAVA作为一门广泛应用于企业级开发的语言,其面试涉及的知识面非常广泛,包括基础语法、面向对象编程、集合框架、多线程、网络编程、设计模式、JVM内存管理等多个方面。下面我们将详细探讨这些关键知识点。 1. **...
- JVM调优:内存参数配置、垃圾回收策略调整、性能监控工具使用。 - 系统优化:网络、磁盘I/O、CPU利用率等方面的考量。 10. **最佳实践与编码规范** - 编程习惯:良好的命名规范、注释规则、错误处理策略。 - ...
3. 虚拟机调优:了解JVM内存结构,进行性能监控和调优。 九、框架与技术 1. Spring框架:理解依赖注入,AOP,Spring Boot,Spring Cloud等相关概念。 2. MyBatis:熟悉SQL映射文件,动态SQL,事务管理等功能。 3. ...