当前位置: 首页 > news >正文

微信网站是什么意思路由器优化大师

微信网站是什么意思,路由器优化大师,wordpress wpgo,南通门户网站建设文章目录 初识jvm内存结构程序计数器(寄存器) 栈问题辨析内存溢出 线程诊断本地方法栈Heap堆内存溢出内存诊断 方法区内存溢出常量池 stringTable直接内存垃圾回收 初识jvm JRE JVM 基础类库 JDK JRE 编译工具 JavaSE JDK IDE工具 JavaEE JDK 应用服务器 IDE工具 jvm是…

文章目录

  • 初识jvm
  • 内存结构
    • 程序计数器(寄存器)
    • 问题辨析
    • 内存溢出
  • 线程诊断
  • 本地方法栈
  • Heap堆
    • 内存溢出
    • 内存诊断
  • 方法区
    • 内存溢出
    • 常量池
  • stringTable
  • 直接内存
  • 垃圾回收

初识jvm

JRE = JVM + 基础类库
JDK = JRE + 编译工具
JavaSE = JDK + IDE工具
JavaEE = JDK + 应用服务器 +IDE工具
jvm是java程序的运行环境
好处:

  • 一次编写,到处运行
  • 自动内存管理,垃圾回收功能
  • 数组下标越界检查
  • 多态
    学习路线:JVM内存结构–>垃圾回收GC–>Java Class–>ClassLoader–>JIT Compiler即时编译器

在这里插入片描述

内存结构

程序计数器(寄存器)

用来记住此线程下一条jvm指令的执行地址
特点:

  • 是线程私有的
  • 不会存在内存溢出(唯一不会内存溢出的jvm内存结构)

每个栈都是一个线程运行需要的内存空间
栈帧,每个方法运行时需要的内存
每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
在调试里面可以看栈\栈帧\内存\开销等

问题辨析

垃圾回收是否涉及栈内存?
不需要,栈帧运行完,自动回收
栈内存定义分配越大越好嘛
不一定,栈内存定义越大,同时运行的线程越少
方法内的局部变量是否线程安全?

  • 如果方法局部变量没有逃离方法的作用访问,它是线程安全的
  • 如果是局部变量引用了对象,并逃离方法的作用方法(返回值),需要考虑线程安全
    是不是线程安全的,主要看是不是有变量线程共享,有变量线程共享就可能引发安全问题,也要看后续采取的解决措施

内存溢出

栈溢出异常:stackOverFlowError
一般一个栈为1024K大小

  • 栈帧过多导致栈内存溢出
  • 栈帧过大导致栈内存溢出

线程诊断

CPU占用过多

  • top定位哪个进程对cpu的占用过高
  • ps H -eo pid,tid,%cpu | grep 进程id(用ps命令进一步定位是哪个线程引起的cpu占用过高)
  • jstack 进程id,可以根据线程id找到有问题的线程,进一步定位到问题代码的源码行号
    程序运行很长时间没有结果
    比如,死锁
  • 还是用jstack 进程id排查

本地方法栈

存放一些不用java代码实现的代码,比如调用一些底层的C代码(比如系统函数,java实现不了的功能),提供内存空间

Heap堆

通过new关键字,创建对象都会使用堆内存
特点

  • 线程共享,堆中对象都需要考虑线程安全的问题
  • 有垃圾回收机制

内存溢出

堆溢出异常:OutOfMemoryError
堆空间大小同样可以设置

内存诊断

  • jps工具,查看当前系统中有哪些java进程
  • jmap工具,查看堆内存占用情况,jmap -heap 进程id
  • jconsole工具,图形界面的,多功能的检测工具,可以连续监测
  • jvisualvm,可视化虚拟机jconsole的加强工具

方法区

方法区的存储与堆的区别:
方法区内容,类名\字段\方法的字节码,静态变量
堆内容,new出来的对象

内存溢出

  • 1.8以前会导致永久代内存溢出
  • 1.8以后会导致元空间内存溢出
    在这里插入图片描述从图中可以看到,方法区一直是一个概念性的区域,1.6时,就是堆中的永久代,(其实图中不应该把堆和方法区分成两块)
    1.8以后从堆中分离,放入本地内存中

常量池

.class反编译后可以显示,类基本信息\常量池\类方法定义\包含了虚拟机指令
常量池会保存类的信息
常量池,就是一张表,虚拟机指令根据这张常量表找到要执行的类名\方法名\参数类型\字面量等信息
运行时常量池,常量池是*.class文件中的,当该类被加载,它的常量池信息就会放入运行时常量池,并把里面的符号地址变为真实地址

stringTable

底层原理还是要看反编译的class文件是怎么做的,因为java在语法上有语法糖等因素,不够清晰

直接内存

垃圾回收

http://www.tj-hxxt.cn/news/63548.html

相关文章:

  • 开不锈钢公司怎么做网站百度sem竞价托管公司
  • 做婚庆网站图片下载百度推广官网登录
  • 乐清网优北京网站优化排名
  • 东莞网站建设百度地图百度企业认证怎么认证
  • 政府网站建设的战略视频号怎么付费推广
  • 好看的模板seo怎么去优化
  • 大连哪有做网站的潍坊网站开发公司
  • 卡盟网站怎么做百度官方营销推广平台加载中
  • 营销类网站 英文全国疫情最新数据
  • 社交网站有哪些如何做上海搜索排名优化
  • 怎么用ngrok做网站关键词查询的分析网站
  • 建设网站制作实训报告福清市百度seo
  • 西安做网页的潍坊百度关键词优化
  • 做房产的网站排名免费下载app并安装
  • 房产信息网显示限售手机网站怎么优化关键词
  • 中国网站建设公司有哪些方面太原百度推广排名优化
  • 怎么制作网站教程图片营销策略范文
  • 优秀b2c网站设计seoheuni
  • 用什么做网站最简单网络营销广告
  • php网站怎么缓存加盟教育培训机构
  • 怎么制作网站后台谷歌广告开户
  • 做网站怎么电话约客户看广告收益的正规平台
  • 河北网站建设方案详细南阳网站优化公司
  • 网站开发公司会在最后面加上公司seo关键字排名
  • 常用网站开发技术和工具网络营销的实现方式包括
  • 广州注册公司流程和费用四川seo平台
  • 郓城那家网站做的好女教师遭网课入侵视频
  • 雁塔免费做网站郴州seo外包
  • web新闻网站开发案例排名公式
  • 白日梦怎么做的网站网站权重如何查询