JVM调优
来源:互联网 发布:linux如何安装hadoop 编辑:程序博客网 时间:2024/06/04 22:46
java内存结构
stack:每个方法对应一个栈帧(线程),每个栈帧里都存在这个方法的局部变量
method area(永久区permanent):静态变量、字符串常量、class文件
heap堆:内存中最大区域
程序计数器:程序执行时用到的临时寄存器
java1.8:堆内存分为新生代和老年代,新生代又分为2个survivor和一个eden
new对象时,特别大的放到老年代,其他放到新生代。经历过一次gc后,这个对象还有引用指向它,此时这个对象跑到一个survivor。反复gc多次,对象在两个survivor之间循环移动。
如果多次gc后,对象仍然在两个survivor之间往复,则将其放入老年代。
回收eden和s1 s2中的垃圾,称为minor GC,内存中所有对象都会维护一个计数器,每进行一次GC这个对象的计数器都会加一,当该值达到阈值时,会将该对象移入老生代。该阈值可配置:JVM参数XX:MaxTenuringThreshold
如何确定垃圾?
String s = new String(),s一般放在stack里面,对象放在heap里面。
s = null,此时没有引用指向这个new出来的对象,这个对象就是垃圾。(这个方法不能涵盖循环引用)。java引用包括:强引用,软引用,弱引用,虚引用。
采用正向可达算法确定垃圾:从roots对象计算可到达的对象就不是垃圾。
垃圾收集算法:
mark-sweep标记清除
copying复制
mark-compact标记压缩
jvm参数说明
- 稳定参数,所有jvm必须有
-X 非标参数,每个jvm实现都不同
-XX 不稳定参数,下一个版本可能会取消
- JVM调优
- JVM调优
- JVM调优
- JVM调优
- JVM 调优
- JVM调优
- JVM调优
- JVM调优
- jvm调优
- JVM调优
- JVM调优
- JVM调优
- jvm调优
- JVM调优
- JVM调优
- JVM调优
- JVM调优
- JVM调优
- JAVA8的简单列子
- 字节序列
- 什么是跨域,如何解决基本的跨域问题?
- 支配树[模板]
- PHP-AMQP实践应用
- JVM调优
- JSP状态管理
- JDBC---连接数据库
- Integer 数值范围在-128~127之间时分别使用 ==和 equals进行比较
- http协议中的1XX,2XX,3XX,4XX,5XX
- 新起点
- 机器学习(支持向量机-SVM)
- The project description file (.project) for 'Servers' is missing
- java中堆、栈、方法区的理解