摘要: 1、stackoverflow: 每当java程序启动一个新的线程时,java虚拟机会为他分配一个栈,java栈以帧为单位保持线程运行状态;当线程调用一个方法是,jvm压入一个新的栈帧到这个线程的栈中,只要这个方法还没返回,这个栈帧就存在。 如果方法的嵌套调用层次太多(如递归调用),随着java栈中 阅读全文
posted @ 2019-09-19 18:00 系统攻城狮 阅读(1353) 评论(1) 推荐(0) 编辑
摘要: Java启动参数共分为三类; 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会 阅读全文
posted @ 2019-09-19 17:25 系统攻城狮 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 上周公司有一个应用,一到晚上高峰期的时候RT(响应时间)就很长。后来上服务器看了下JVM的配置,发现运维在启动参数那里把-Xss给设成了10M。导致每个线程占用的内存过大,导致内存消耗过快,其它线程排队等待的情况。后来把-Xss改成1M之后,系统性能有明显的提高。 总结: 1.-Xss参数不可以设的 阅读全文
posted @ 2019-09-19 17:06 系统攻城狮 阅读(891) 评论(0) 推荐(0) 编辑
摘要: JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。 先看下JAVA堆内存是如何划分的,如图: 在JDK1.8版本废弃了永久代,替代的是元空间(MetaSpace),元空间与永久代上类似,都是方法区的实现,他们最 阅读全文
posted @ 2019-09-19 16:50 系统攻城狮 阅读(258) 评论(0) 推荐(0) 编辑