社区
Java EE
帖子详情
Java系统中GC频繁启动是什么原因?
kensallay_31
2015-07-15 06:29:01
我这两天在面试一个工作,他们好像遇到问题,可能现在的系统代码质量不高,GC每3
秒钟启动一次,他问我是不是修改JVM的参数可以解决,调正GC的young、old、
permanent的大小?我过两天要去面试,想准备一下,有人知道这是为什么吗?有什么
解决的途径?
...全文
433
1
打赏
收藏
Java系统中GC频繁启动是什么原因?
我这两天在面试一个工作,他们好像遇到问题,可能现在的系统代码质量不高,GC每3 秒钟启动一次,他问我是不是修改JVM的参数可以解决,调正GC的young、old、 permanent的大小?我过两天要去面试,想准备一下,有人知道这是为什么吗?有什么 解决的途径?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WorldMobile
2015-07-15
打赏
举报
回复
根据GC的工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求。一些关于程序设计的几点建议: 1.最基本的建议就是尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为 null.我们在使用这种方式时候,必须特别注意一些复杂的对象图,例如数组,队列,树,图等,这些对象之间有相互引用关系较为复杂。对于这类对象,GC 回收它们一般效率较低。如果程序允许,尽早将不用的引用对象赋为null.这样可以加速GC的工作。 2.尽量少用finalize函数。finalize函数是Java提供给程序员一个释放对象或资源的机会。但是,它会加大GC的工作量,因此尽量少采用finalize方式回收资源。 3.如果需要使用经常使用的图片,可以使用soft应用类型。它可以尽可能将图片保存在内存中,供程序调用,而不引起OutOfMemory. 4.注意集合数据类型,包括数组,树,图,链表等数据结构,这些数据结构对GC来说,回收更为复杂。另外,注意一些全局的变量,以及一些静态变量。这些变量往往容易引起悬挂对象(dangling reference),造成内存浪费。 5.当程序有一定的等待时间,程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。使用增量式GC可以缩短Java程序的暂停时间。 http://itlab.idcquan.com/Java/base/805949.html
GC
histo
GC
日志分析工具
2. **获取
GC
日志**: 首先确保
Java
应用配置了生成
GC
日志,通常在JVM
启动
参数
中
添加`-XX:+Print
GC
`和`-XX:+Print
GC
Details`选项。 3. **运行
GC
histo**: 在解压后的目录
中
,双击`
GC
histo.jar`文件,
启动
工具。 4. **...
java
不断
gc
原因
_CPU飙高,
频繁
GC
,怎么排查?
作者:爱宝贝丶来源:my.oschina.net/zhangxufeng/blog/3017521处理过线上问题的同学基本上都会遇到
系统
突然运行缓慢,CPU 100%,以及Full
GC
次数过多的问题。当然,这些问题的最终导致的直观现象就是
系统
运行缓慢,...
在
java
中
gc
是啥_
java
中
,什么是
GC
?
GC
的基本原理。
1.什么是
GC
GC
(GarbageCollection)是垃圾回收机制,在
Java
中
开发人员无法使用指针来自由的管理内存,
GC
是JVM对内存(实际上就是对象)进行管理的方式。
GC
使得
Java
开发人员摆脱了繁琐的内存管理工作,让程序的开发更有效...
JAVA
项目
启动
时
频繁
Full
GC
问题
场景 新项目上线,为了观察项目运行情况,所以去监控看板去观察。好家伙,一看运行才一会...项目
启动
的时候触发Full
GC
,说明在项目
启动
的时候,老年代或者meta区可能
频繁
扩容导致的(JDK8+)。
原因
可能是:1、项目启
解决 CMS Old
GC
频繁
触发线上问题技术方案
CMS Old
GC
频繁
触发不仅会对
系统
的吞吐量造成影响,还可能导致响应时间波动,严重时甚至可能影响到整个应用的稳定性。通过深入分析其触发
原因
和优化措施,我们可以采取一系列的解决方案来缓解或消除这一问题,从而...
Java EE
67,538
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章