本文目录一览:
- 1、jvm优化.有哪些jvm参数?用过哪些jvm调优工具
- 2、高分悬赏,100分另加20分,下面是一段跨站代码,从中能不能看到跨站的信息,比如cookie信息,保存在哪里
- 3、as3.0写的时间监听事件代码,执行一会就儿就乱了,甚至死机。
jvm优化.有哪些jvm参数?用过哪些jvm调优工具
JVM是最好的软件工程之一,它为Java提供了坚实的基础,许多流行语言如Kotlin、Scala、Clojure、Groovy都使用JVM作为运行基础。一个专业的Java工程师必须要了解并掌握JVM,接下来就给大家分享Java基础知识中JVM调优相关知识点。
杭州Java基础知识学习之JVM调优讲解
JVM常见的调优参数包括:
-Xmx:指定java程序的最大堆内存, 使用java -Xmx5000M -version判断当前系统能分配的最大堆内存;
-Xms:指定最小堆内存, 通常设置成跟最大堆内存一样,减少GC;
-Xmn:设置年轻代大小。整个堆大小=年轻代大小+年老代大小。所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8;
-Xss:指定线程的最大栈空间, 此参数决定了java函数调用的深度, 值越大调用深度越深, 若值太小则容易出栈溢出错误(StackOverflowError);
-XX:PermSize:指定方法区(永久区)的初始值,默认是物理内存的1/64,在Java8永久区移除, 代之的是元数据区,由-XX:MetaspaceSize指定;
-XX:MaxPermSize:指定方法区的最大值, 默认是物理内存的1/4,在java8中由-XX:MaxMetaspaceSize指定元数据区的大小;
-XX:NewRatio=n:年老代与年轻代的比值,-XX:NewRatio=2, 表示年老代与年轻代的比值为2:1;
-XX:SurvivorRatio=n:Eden区与Survivor区的大小比值,-XX:SurvivorRatio=8表示Eden区与Survivor区的大小比值是8:1:1,因为Survivor区有两个(from, to)。
JVM实质上分为三大块,年轻代(YoungGen),年老代(Old Memory),及持久代(Perm,在Java8中被取消)。
年轻代大小选择
响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。
吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。
年老代大小选择
响应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数。如果堆设置小了,可以会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间。最优化的方案,一般需要参考以下数据获得:并发垃圾收集信息、持久代并发收集次数、传统GC信息、花在年轻代和年老代回收上的时间比例。
减少年轻代和年老代花费的时间,一般会提高应用的效率。
吞吐量优先的应用:一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代。原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象。
较小堆引起的碎片问题
因为年老代的并发收集器使用标记、清除算法,所以不会对堆进行压缩。当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象。但是,当堆空间较小时,运行一段时间以后,就会出现“碎片”,如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记、清除方式进行回收。如果出现“碎片”,可能需要进行如下配置:
-XX:+UseCMSCompactAtFullCollection:使用并发收集器时,开启对年老代的压缩。
-XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩。
高分悬赏,100分另加20分,下面是一段跨站代码,从中能不能看到跨站的信息,比如cookie信息,保存在哪里
Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。
客户端的cookie一般是保存在C:\Documents and Settings\当前用户名\Local settings\TemporaryInternetFile。
服务端也会保存cookie,一般是保存在内存中。
在客户计算机上呈现为一个文本文件。
当用户登录到一个给定的站点时,浏览器检查用户的机器是否有一个对应的URL的cookie文件。如果有,会将这个数据追加到HTTP请求中。然后服务器端能读取Cookie数据,创建一个可能适合当前用户偏好的GUI。
Cookie可以配置成永久的,也可是临时的。永久的直接以文本方式放在客户机。临时的cookie仅存在于服务器交互的HTTp头部。一旦用户退出站点,包含在绘画Cookie里的所有数据都会销毁。只有在Cookie设置了保存时间超过默认时间时候才会生成文本文件,否侧就如上所说,存在http头里面,不会生成文本文档。
as3.0写的时间监听事件代码,执行一会就儿就乱了,甚至死机。
如楼上所说,有多帧循环播放出现的问题导致最大
解决方法:
1.还是利用帧来检测,去除timer计算
var nowdata:Date=new Date();
var xiaoshi = nowdata.hours;
var fengzhong = nowdata.minutes;
var miaozhong = nowdata.seconds;
if (xiaoshi 10){
xiaoshi ="0" + xiaoshi;
}
if(fengzhong10){
fengzhong="0"+fengzhong;
}
if(miaozhong10){
miaozhong="0"+miaozhong;
}
zhangfan.text=xiaoshi+":"+fengzhong+":"+miaozhong;/*场景上建了一个叫zhangfan的文框*/
2、代码利用timer计算,取消帧播放(当然可以用帧播放又用timer计算的,不过显得重复了)
stop();
var mytimer:Timer = new Timer(1000);mytimer.start();
mytimer.addEventListener(TimerEvent.TIMER,xssj);
function xssj(event:TimerEvent=null){
var nowdata:Date=new Date();
var xiaoshi = nowdata.hours;
var fengzhong = nowdata.minutes;
var miaozhong = nowdata.seconds;
if (xiaoshi 10){
xiaoshi ="0" + xiaoshi;
}
if(fengzhong10){
fengzhong="0"+fengzhong;
}
if(miaozhong10){
miaozhong="0"+miaozhong;
}
zhangfan.text=xiaoshi+":"+fengzhong+":"+miaozhong;/*场景上建了一个叫zhangfan的文框*/
}
xssj();//这里我加多的,因为一开始时间不显示,要过一分再显示,会觉得有点怪