对jvm 的理解

来源:互联网 发布:什么编程语言好找工作 编辑:程序博客网 时间:2024/06/15 10:00

java内存模型

解决数据存储的问题,数据怎么放,放在哪里
解决程序的运行问题,即程序怎么执行,或者说如何处理数据的问题。java栈是一块线程私有的内存空间,存放对象的引用
方法区 就是存放类信息,常量信息,常量池信息,包括字符串字面量和数据常量等、是一块所有线程共享的内存空间

堆中的对象的存放地址是通过方法区中的类信息创建的。java堆是与java应用程序关系最密切的内存空间,几乎所有的java对象都存放在其中
java堆分为新生代和老年代,分代的目的就是优化GC性能,新生代分为三块区域:Eden(伊甸园),s0,s1区,一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Survivor区。s0和s1是两块大小相等并且可以相互转换角色的空间,对象在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到一定程度时,就会被移动到年老代中。
在年轻代的垃圾回收算法使用的是复制算法,复制算法的基本思想就是将内存分为两块,每次只用其中一块,当这一块内存用完,就将还活着的对象复制到另外一块上面。复制算法不会产生内存碎片。

 -XX:PermSize=128m   -XX:MaxPermSize=320m永久代的最大大小  -Xmn2g新生代的大小

参考  新生代与老年代

-Xmn可以设置新生代的大小,设置一个比较大的新生代会减少老年代的大小,这个参数对系统的性能以及GC行为有很大影响,新生代的大小一般设置为整个堆内存的1/3到1/4,
-XX:SurvivorRatio设置新生代中Eden和from/to的空间比例;
实际工作中,应尽可能的将对象预留在新生代,减少老年代GC的次数,除了可以用-Xmn设置新生代的大小,还可以通过-XX:newRatio设置新生代和老年代的比例,比例=老年代/新生代

jmeter 聚合报告的参数意义

Samples:样本数
Average:平均响应时间
Median:中位数,50%响应时间小于此值
90%line:90%响应时间小于此值
Min:最短响应时间
Max:最大响应时间
Error:未命中数/比率
Throughput:吞吐量——每秒完成请求事务数【可以理解成tps或者qps,一般100用户压15min左右,其值会在800左右——很多地方并没有严格去计较,就像tps和qps概念是不一样的,可是很多时候可以混为一谈】

Kb/sec:每秒接收数据量

Tomcat的优化

1)  Tomcat启动命令行中的优化参数即JVM优化
2 ) Tomcat容器自身参数的优化
Tomcat首先跑在JVM之上的,因为它的启动其实也只是一个java命令行,首先我们需要对这个JAVA的启动命令行进行调优。
Tomcat 的启动参数位于bin目录下,linux下的catalina.sh,和Windows下的catalina.bat。

原创粉丝点击