先自己弄个问题

产生这个STW问题有 dump线程 死锁检查 堆dupm

/**产生stw其它几个因素:

* dump线程

* 死锁检查

* 堆dupm

* 垃圾回收算法:为让stw时间较长,增大年老代空间和选用serial old垃圾算法进行回收老年代

*

*

* jvm垃圾回收参数:-Xms512m -Xmx512m -Xmn4m -XX:+PrintGCDetails -XX:+UseSerialGC

*

* @author zhanghua

*

*/

public class GenerateSTW {

/**

* 通过集合引用对象,保证对象不被gc回收

*/

private List content=new ArrayList();

public static void main(String[] args) {

GenerateSTW stw=new GenerateSTW();

stw.start();

}

private void start() {

while(true){

try {

content.add(new byte[1024]);

} catch (OutOfMemoryError e) {

//在不可以分配的时候,进行清理部分空间,继续运行,这样会很快产生下一次垃圾回收

for(int i=0;i<1024;i++){

content.remove(i);

}

}

}

}

}

复制代码

是否有方法尽可能减少一次STW停顿时间?由此带来的弊端是什么?

答:减少一次STW停顿时间,我这里从三个方面回答,

1、个是垃圾算法选择

垃圾算法选择:现在都是多核cpu,可以采用并行和并发收集器,如果是响应时间优化的系统应用 ,则jdk6版本一般

选择的垃圾回收算法是:XX:+UseConcMarkSweepGC,即cms收集器,这个收集器垃圾回收时间短,但是垃圾回收总时间变长,使的降低吞

吐量,算法使用的是标记-清除,并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片",使得运行效率降低.

CMSFullGCsBeforeCompaction此值设置运行多少次GC以后对内存空间进行压缩

2、一个是程序使用堆设置

程序使用堆设置:应该根据程序运行情况,通过Jvm垃圾回收分析,设置一个比较合适的堆大小,不能一意味的将堆设置过大,导致

程序回收很大一块空间,所以会导致stw时间较长,

3、无用对象尽早释放

无用对象尽早释放:使用的对象,如果没有用,尽早设置null,尽量在年轻代将对象进行回收掉,可以减少full gc停顿时长

java stw_java 中STW现象解决相关推荐

  1. Java 8中HashMap冲突解决

    Java 8中HashMap冲突解决 目录(?)[+] 在Java 8 之前,HashMap和其他基于map的类都是通过链地址法解决冲突,它们使用单向链表来存储相同索引值的元素.在最坏的情况下,这种方 ...

  2. Java虚拟机中STW(stop the world)是什么意思

    Stop-the-World,简称STW 1.指的是GC事件发生过程中,会产生应用程序的停顿.停顿产生时整个应用程序线程都会被暂停,没有任何响应, 有点像卡死的感觉,这个停顿称为STW. (1)可达性 ...

  3. Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?

    苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 提起Java领域中的锁,是否有种"道不尽红尘奢恋,诉不完人间恩怨"的 ...

  4. Java 并发编程解析 | 如何正确理解Java领域中的内存模型,主要是解决了什么问题?

    写在开头 这些年,随着CPU.内存.I/O 设备都在不断迭代,不断朝着更快的方向努力.在这个快速发展的过程中,有一个核心矛盾一直存在,就是这三者的速度差异.CPU 和内存的速度差异可以形象地描述为:C ...

  5. nc提示java过期_用友NC系统使用过程中常见问题和解决方法!财会必看!

    原标题:用友NC系统使用过程中常见问题和解决方法!财会必看! 用友NC系统使用过程中常见问题和解决方法: 1.无法安装客户端插件,不能进入NC系统登陆界面 问题现象 现象1:可以打开web界面,但无法 ...

  6. 用友java错误_用友NC系统使用过程中常见问题和解决方法

    用友NC系统使用过程中常见问题和解决方法: 1.无法安装客户端插件,不能进入NC系统登陆界面 问题现象 现象1:可以打开web界面,但无法进入登陆界面,一直停留在右图所示界面. 现象2:系统提示安全警 ...

  7. java开发中遇到的问题及解决方法(持续更新)

    java开发中遇到的问题及解决方法(持续更新) 参考文章: (1)java开发中遇到的问题及解决方法(持续更新) (2)https://www.cnblogs.com/LiuYanYGZ/p/6112 ...

  8. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  9. Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决)

    Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决) 参考文章: (1)Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决) (2)https://www.cn ...

最新文章

  1. 系统设计与架构笔记:ETL工具开发和设计的建议
  2. 从源码分析DEARGUI之异步调用函数对比
  3. node经验总结(一)
  4. hashmap的五种便利方式
  5. android平台 arcgisr_《ArcGIS Runtime SDK for Android开发笔记》——Android Studio基本配置与使用...
  6. javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题
  7. 1006:A+B问题
  8. 软件工程实践2017结对第二次作业
  9. PostgreSQL修改pgsql提示符
  10. 计算机表情识别技术研究学什么,表情识别的图像预处理和特征提取方法研究
  11. android 日历 课程设计,课程设计-数字日历的设计
  12. Dato for mac(自定义菜单栏日历)支持m1
  13. 图解深度学习的笔记:1.MP模型,感知器,BP下的多层感知器
  14. 三星s8 android版本,三星S8+官方国行版安卓9完整固件系统升级包:CHC-G9550ZCU3DSF2...
  15. android面试题
  16. C++构造函数的default和delete
  17. 这是50年前的一本关于30年前软件开发经验的书——《人月神话》读书笔记
  18. BP神经网络原理及matlab实例
  19. 软件工程网络工程第二次训练(AC代码和详细解释)(C语言描述)
  20. 曼哈顿距离,欧式距离,明式距离,切比雪夫距离区别

热门文章

  1. 织梦cms模板文件不存在,无法解析文档
  2. 四级英语计算机研究生,计算机技术在职研究生五月同等学力申硕需要考英语四级吗...
  3. 【算法】动态规划 背包问题 python
  4. 【长文】最全面群面完整版攻略(群面,题型,角色,总结,危机处理等)——人人都是产品经理
  5. python日历库_python下的一个好用的日历库,支持农历转公历,和公历转农历等功能...
  6. 一度经度与一度纬度长度
  7. linux系统句柄数命令
  8. 后端面试知识点总结 其他
  9. Ubuntu20.04上3090显卡安装Nvidia驱动和CUDA11.1及cuDNN8.0.4
  10. matlab plot 数组,matlab plot基本用法