JVM

线程私有:
栈:入口只有一个 先进后出
虚拟机栈 -Xss(栈容量默认1M):一个方法对应一个栈帧(1局部变量表(基本数据类型/引用地址)2操作数栈3动态连接4返回地址)
高并发 支持更多线程 在内存一定的情况下  减少栈的容量
虚拟机栈异常--StackOverflowerError(递归)执行的虚拟机栈深度大于虚拟机栈允许的最大深度
可把栈内存调大 支持线程则会变小


本地方法栈:native
程序计数器:当前线程正在执行的字节码指令的地址(行号) 就是线程执行到哪了
解决cpu切换线程问题


JVM垃圾回收(java特色)
堆 : java堆被所有线程共享   所有的对象和数组存放区域
-Xmx 堆区内存可能分配的最大上限
-Xms 堆内存的初始内存分配大小
Gc Roots:1虚拟机栈中引用的对象  2方法区:类静态属性引用的对象  常量引用的引用对象
有Gc Roots 引用 是存活对象
新生代(1/3):Eden(80%)、from Survivor(10%) 、Survivorto(10%)       老年代(2/3)

对象分配:
基本上新的对象有限分配Eden
Eden区满了 MinorGc 会送新生代采用回收算法改进版本
form to两个交换区只有一个区有数据
被MinorGc后 Eden 的进入 from、 to
每个对象定义age计数器 每次GC在交换区 后年龄加1 大于15 进去老年代

对象回收:
当Eden区没有足够控件 会发生Gc(age+=1)
90%的对象不需要我们回收(8:1:1)

(Eden-->交换区--》年老代)
大对象直接进去老年代
老年代空间不足 full GC

MinorGc避免不了 Full尽量避免
处理方式:保存堆栈快照日志
                分析内存泄漏(100M - 30M不能回收的对象始终占)
                调整内存设置控制垃圾回收频率
                选择适合的垃圾回收期
                


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值