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

做网站收费标准点击量网站建设的公司怎么收费

做网站收费标准点击量,网站建设的公司怎么收费,网站建设专业英文,网站产品链接怎么做系列文章目录 第一章 Java核心篇之JVM探秘#xff1a;内存模型与管理初探 第二章 Java核心篇之JVM探秘#xff1a;对象创建与内存分配机制 第三章 Java核心篇之JVM探秘#xff1a;垃圾回收算法与垃圾收集器 第四章 Java核心篇之JVM调优实战#xff1a;Arthas工具使用及…系列文章目录 第一章 Java核心篇之JVM探秘内存模型与管理初探 第二章 Java核心篇之JVM探秘对象创建与内存分配机制 第三章 Java核心篇之JVM探秘垃圾回收算法与垃圾收集器 第四章 Java核心篇之JVM调优实战Arthas工具使用及GC日志分析 目录 前言 一、JVM整体结构图 二、JVM内存区域概述  三、JVM内存参数设置 XX:PermSize  -XX:MaxMetaspaceSize和-XX:MetaspaceSize  三、垃圾回收Garbage Collection 分代收集理论 垃圾回收算法 四、内存溢出与内存泄漏 内存溢出 内存泄漏 总结 前言 在Java的世界里JVMJava Virtual Machine扮演着至关重要的角色。它不仅提供了运行Java程序的环境还负责管理内存确保程序的高效和安全执行。本文将深入探讨JVM内存模型理解其内部结构与工作原理帮助开发者更好地优化代码避免常见的内存问题。 一、JVM整体结构图 二、JVM内存区域概述  程序计数器Program Counter Register 每个线程都有一个独立的程序计数器用于指示当前线程所执行的字节码指令的位置。当线程被中断或恢复时程序计数器可以帮助JVM找到上一次执行的位置。 虚拟机栈Virtual Machine Stack 也是线程私有的用于存储局部变量、操作数栈、动态链接和方法出口等信息。每个方法调用都会创建一个新的栈帧方法退出后相应的栈帧也会被销毁。 本地方法栈Native Method Stack 与虚拟机栈类似但用于支持本地非Java方法的调用。在现代JVM中它往往与虚拟机栈合并使用相同的实现方式。 Java堆Heap 所有线程共享的内存区域用于存储对象实例和数组。这是垃圾收集的主要区域。Java堆是JVM管理的内存中最大的一块它的大小可以通过参数进行配置。 方法区Method Area 也称为“非堆”用于存储类信息、常量、静态变量、即时编译后的代码等数据。它与Java堆一样由所有线程共享。 直接内存Direct Memory 不属于JVM内存的一部分但是通过java.nio.ByteBuffer.allocateDirect()等API分配的内存。直接内存的使用需要特别注意因为不受JVM的常规内存管理机制控制。 局部变量表Local Variable Table: 局部变量表用于存储方法参数和方法内部定义的局部变量。局部变量包括基本类型的变量、对象引用和返回地址等。 每个局部变量占据一个或多个“slot”槽一个slot可以存放一个32位数据类型如int、float或对象引用64位数据类型如long和double则占用两个slot。 变量的生存周期是从方法被调用开始直到方法结束此时局部变量表的内容会被销毁。 操作数栈Operand Stack: 操作数栈是一个后进先出LIFO的数据结构用于存放中间运算结果同时也作为方法调用和返回的参数传递的场所。 当执行任何计算表达式时操作数栈用来存放运算符的左右操作数以及存放运算结果。 方法调用时参数会被压入操作数栈方法返回时返回值会被放入操作数栈然后传递给调用者。 动态链接Dynamic Linking: 动态链接是指将方法调用解析为方法在内存中的直接引用。在JVM中当一个方法调用另一个方法时它需要知道目标方法的确切位置即其在内存中的入口点。 这个过程在运行时完成允许方法在不同的类加载器之间动态查找和链接。 方法出口Method Exit: 方法出口指的是方法执行完毕后如何清理现场并返回调用者的过程。这包括恢复上层方法的局部变量表和操作数栈将返回值如果有的话压入调用者的操作数栈中以及恢复方法调用之前的程序计数器值以便继续执行调用者的方法。 三、JVM内存参数设置 Spring Boot程序的JVM参数设置格式Tomcat启动直接加到bin目录下的catalina文件中即可 java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize256M ‐XX:MaxMetaspaceSize256M ‐jar xxx.jar XX:PermSize  在JDK 8之前类的元数据包括类信息、常量池、字段信息、方法信息等是存储在永久代Permanent Generation中的。XX:PermSize 参数用于设置永久代的初始大小而 -XX:MaxPermSize 则用于设置永久代的最大大小。如果永久代的空间不足JVM 将会抛出 OutOfMemoryError: PermGen space 的错误。 -XX:MaxMetaspaceSize和-XX:MetaspaceSize  从JDK 8开始永久代被移除类元数据被移到了一个名为“Metaspace”的本机内存区域中。这意味着类元数据的管理不再受限于堆内存的限制而是受限于系统可用的物理内存。 -XX:MaxMetaspaceSize用于设置Metaspace的最大大小。默认情况下Metaspace可以使用系统的大部分物理内存但这可能会导致其他应用程序的内存不足。因此在多应用服务器环境中通常需要显式地限制Metaspace的大小。 -XX:MetaspaceSize用于设置Metaspace的起始大小。当Metaspace的使用量超过这个值时JVM会尝试增加Metaspace的大小直到达到-XX:MaxMetaspaceSize指定的上限。 三、垃圾回收Garbage Collection 垃圾回收是JVM内存管理的核心机制之一。JVM通过自动检测不再被引用的对象并回收这些对象占用的内存从而避免了手动内存管理带来的问题如内存泄漏和野指针。 分代收集理论 Java堆通常分为新生代Young Generation和老年代Old Generation。新生代又细分为Eden空间和两个Survivor空间S0和S1。对象首先在Eden空间创建经过几次GC后存活的对象会被移动到Survivor空间最终可能晋升到老年代。 垃圾回收算法 包括标记-清除Mark-Sweep、复制Copying、标记-压缩Mark-Compact和分代收集等算法。每种算法都有其优缺点适用于不同的场景。 四、内存溢出与内存泄漏 尽管JVM提供了自动内存管理但在实际开发中仍需警惕内存溢出和内存泄漏的问题。 内存溢出 当JVM无法申请到足够的内存空间时会抛出OutOfMemoryError异常。这可能是由于堆大小设置不当、内存泄露或大对象过多导致的。 内存泄漏 即应用程序中存在不再使用的对象但由于某些原因如循环引用它们仍然被引用导致垃圾收集器无法回收它们从而浪费内存资源。 总结 深入理解JVM内存模型对于Java开发者至关重要。它不仅有助于编写更高效的代码还能有效预防和解决内存相关的问题。随着Java应用的复杂度不断增加对JVM内存管理的掌握将成为开发者技能树上的重要一环。
http://www.hkea.cn/news/14496859/

相关文章:

  • 如何做好网站关键词优化网页设计报价单模板
  • 邢台做wap网站费用成功的网站不仅仅是优化排
  • ie6 网站模板知知网站推荐
  • 网站可视化后台vue.js网站如果做自适应
  • 网站如何做引流家在龙岗
  • 英文网站标题字体wordpress主题无法发布
  • 三网合一网站建设方案卖菜网站应该怎么做
  • 静态网站可以做留言板黄桃图片友情链接
  • 赣州网站建设行情深圳seo优化排名
  • 邢台网站制作哪家好网址大全下载到桌面上
  • 常州住房和城乡建设局网站施工企业资质序列
  • 好的手机端网站模板下载安装个人音乐分享网站源码
  • 云南政务网站建设如何做网站横幅
  • 怎么自己电脑做网站服务器厦门规划建设局网站
  • 中山建设工程招聘信息网站做企业网站需要的人
  • 阳新县建设局网站地推十大推广app平台
  • 网站设计建站dedecms网站地图
  • 手机网站制作公司 广州轴承外贸平台哪个网站最好
  • 网站域名解析登陆临沂网站建设技术支持
  • 个人网站介绍企业邮箱域名怎么填写
  • 怎么做业务网站什么专业学网站建设
  • 相册网站模板在菲律宾做网络网站犯法吗
  • 精品简历模板网站辽宁省建设培训中心网站
  • 资讯文章类网站织梦模板做网站学习
  • 网页制作与网站建设思维导图正规的营销型网站建设公司
  • 中文网站设计云网站建设
  • 长沙医疗网站建设水产养殖畜禽饲料类网站前端模板
  • wordpress 网站被挂马免费做图软件电脑版
  • 用虚拟机做服务器搭建网站网站流量好难做
  • 建设企业网站的申请做网站有免费的服务器吗