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

深圳做企业网站哪家好免费软件下载网站入口

深圳做企业网站哪家好,免费软件下载网站入口,学校教务网站的设计与实现,长春新增2个高风险地区目录 JVM的位置三种 JVMJVM体系结构类加载器双亲委派机制概念例子作用 沙箱安全机制组成沙箱的基本组件 NativeJNI#xff1a;Java Native Interface#xff08;本地方法接口#xff09;Native Method Stack#xff08;本地方法栈#xff09; PC寄存器#xff08;Program… 目录 JVM的位置三种 JVMJVM体系结构类加载器双亲委派机制概念例子作用 沙箱安全机制组成沙箱的基本组件 NativeJNIJava Native Interface本地方法接口Native Method Stack本地方法栈 PC寄存器Program Counter Register方法区Method Area栈Java Stack栈 堆 方法区交互关系 堆Heap新生区 伊甸园幸存者区*2老年区永久区堆内存调优报OOM怎么办 GC垃圾回收引用计数法复制算法标记清除标记压缩标记整理再优化标记清除压缩再优化分代收集算法总结 JVM的位置 应用程序Java应用程序在JRE上运行JRE包含JVMJRE在操作系统Windows、Mac上运行操作系统在硬件体系Intel、Spac…上运行。 三种 JVM Sun公司HotSpot 用的最多我们使用BEAJRockitIBMJ9VM JVM体系结构 JVM 调优99%都是在方法区和堆大部分时间调堆。 JNIJava Native Interface本地方法接口 类加载器 作用加载class文件 例如new Student();具体实例在堆里引用变量名放栈里 虚拟机自带的加载器启动类根加载器扩展类加载器应用程序加载器 双亲委派机制 概念 当某个类加载器需要加载某个.class文件时它首先把这个任务委托给他的上级类加载器递归这个操作如果上级的类加载器没有加载自己才会去加载这个类。 例子 当一个 Hello.class 这样的文件要被加载时。 不考虑我们自定义类加载器首先会在 AppClassLoader 中检查是否加载过如果有那就无需再加载了。如果没有那么会拿到父加载器然后调用父加载器的 loadClass 方法。 父类中同理也会先检查自己是否已经加载过如果没有再往上。注意这个类似递归的过程直到到达 Bootstrap classLoader 之前都是在检查是否加载过并不会选择自己去加载。 直到 BootstrapClassLoader已经没有父加载器了这时候开始考虑自己是否能加载了如果自己无法加载会下沉到子加载器去加载一直到最底层如果没有任何加载器能加载就会抛出ClassNotFoundException。 作用 1、防止重复加载同一个.class。通过委托去向上面问一问加载过了就不用再加载一遍。保证数据安全。2、保证核心.class不能被篡改。通过委托方式不会去篡改核心.class即使篡改也不会去加载即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全。 比如如果有人想替换系统级别的类String.java。 篡改它的实现在这种机制下这些系统的类已经被 Bootstrap classLoader 加载过了为什么因为当一个类需要加载的时候最先去尝试加载的就是 BootstrapClassLoader 所以其他类加载器并没有机会再去加载从一定程度上防止了危险代码的植入。 沙箱安全机制 组成沙箱的基本组件 字节码校验器bytecode verifier 确保 Java 类文件 .Class 遵循 Java 语言规范。这样可以帮助 Java 程序实现内存保护。但并不是所有的类文件都会经过字节码校验比如核心类。类装载器class loader 其中类装载器在3个方面对 Java 沙箱起作用 它防止恶意代码去干涉善意的代码 //双亲委派模式它守护了被信任的类库边界它将代码归入保护域确定了代码可以进行哪些操作。 虚拟机为不同的类加载器载入的类提供不同的命名空间命名空间由一系列唯一的名称组成每一个被装载的类将有一个名字这个命名空间是由 Java 虚拟机为每一个类装载器维护的它们互相之间甚至不可见。 类装载器采用的机制是双亲委派模式。 1、从最内层 JVM 自带类加载器开始加载外层恶意同名类得不到加载从而无法使用 2、由于严格通过包来区分了访问域外层恶意的类通过内置代码也无法获得权限访问到内层类破坏代码就自然无法生效。 存取控制器access controller存取控制器可以控制核心 API 对操作系统的存取权限而这个控制的策略设定可以由用户指定。安全管理器security manager是核心 API 和操作系统之间的主要接口。实现权限控制比存取控制器优先级高。安全软件包security packagejava.security 下的类和扩展包下的类允许用户为自己的应用增加新的安全特性包括 安全提供者消息摘要数字签名 keytools https(需要证书)加密鉴别 Native 凡是带了 native 关键字的说明 Java 的作用范围达不到了得回去调用底层C语言的库 凡是带了 native 关键字的方法会进入本地方法栈其它的是 Java栈 JNIJava Native Interface本地方法接口 调用本地方法接口JNI作用 扩展 Java 的使用融合不同的编程语言为 Java 所用 Java 诞生的初衷是融合C/C程序C、C横行想要立足必须要有调用C、C的程序它在内存区城中专门开辟了块标记区城: Native Method Stack Native Method Stack本地方法栈 登记 native 方法在执行引擎Execution Engine执行的时候。通过JNI 本地方法接口加载**本地方法库(Native Libraies)**中的方法。 在企业级应用中少见与硬件有关应用Java程序驱动打印机系统管理生产设备等 PC寄存器Program Counter Register 程序计数器: Program Counter Register 每个线程都有一个程序计数器是线程私有的就是一个指针 指向方法区中的方法字节码 ( 用来存储指向下一条指令的地址 也即将要执行的指令代码 ) 在执行引擎读取下一条指令,是一个非常小的内存空间几乎可以忽略不计。 方法区Method Area 方法区是被所有线程共享所有字段和方法字节码以及一些特殊方法如构造函数接口代码也在此定义简单说所有定义的方法的信息都保存在该区域此区域属于共享区间 静态变量、常量、类信息(构造方法、接口定义)、运行时的常量池如staticfinal,Class类模板, 常量池存在方法区中但是实例变量存在堆内存中和方法区无关。 栈Java Stack 为什么 main() 先执行最后结束因为一开始 main() 先压入栈 栈栈内存主管程序的运行生命周期和线程同步。 线程结束栈内存也就释放对于栈来说不存在垃圾回收问题。 栈存放8大基本类型对象引用实例的方法。 栈运行原理栈帧局部变量表操作数栈每调用一个方法都有一个栈帧。 栈满了 main() 无法结束会抛出错误栈溢出 StackOverflowError 栈 堆 方法区交互关系 堆Heap 一个 JVM 只有一个堆内存堆的大小是可以调节的。 类加载器读取了类文件后一般会把 类方法常量变量保存所有引用类型的真实对象放到堆中。 堆内存细分3个区域 新生区伊甸园区 Young / new养老区 old永久区 Perm 在JDK8以后永久存储区改了个名字 (元空间) GC 垃圾回收主要是在 伊甸园区 和 养老区。 假设内存满了报错 OOM堆内存不够 OutOfMemoryError:Java heap space //-Xms8m -Xmx8m -XX:PrintGCDetails public static void main(String[] args) {String str javajavajavajava;while (true){str str new Random().nextInt(888888888) new Random().nextInt(21_0000_0000);} } //OutOfMemoryError:Java heap space 堆内存满了新生区 伊甸园幸存者区*2 类诞生和成长甚至死亡的地方伊甸园所有对象都是在伊甸园区 new 出来的幸存者区from, to轻GC定期清理伊甸园活下来的放入幸存者区幸存者区满了之后重GC 清理伊甸园幸存者区活下来的放入养老区。都满了就报 OOM。 注经过研究99%的对象都是临时对象直接被清理了 老年区 新生区剩下来的轻GC杀不死了 永久区 这个区域常驻内存用来存放 JDK 自身携带的 Class 对象Interface 元数据存储的是 Java 运行时的一些环境或类信息该区域不存在垃圾回收GC。关闭虚拟机就会释放这个内存。 jdk1.6之前永久代常量池在方法区。jdk1.7永久代但是慢慢退化了去永久代常量池在堆中。jdk1.8之后无永久代常量池在元空间。 常量池一直在方法区其中的字符串池 JDK1.7之后保存到了堆中。 永久区 OOM 例子一个启动类加载了大量的第三方jar包。Tomcat 部署了太多的应用大量动态生成的反射类。不断的被加载。直到内存满就会出现 OOM。 方法区又称非堆 (non-heap)本质还是堆只是为了区分概念。 元空间逻辑上存在物理上并不存在。 堆内存调优 public static void main(String[] args) {//返回虚拟机试图使用的最大内存long max Runtime.getRuntime().maxMemory(); //字节 1024*1024//返回jvm初始化的总内存long total Runtime.getRuntime().totalMemory();System.out.println(maxmax字节\t(max/(double)1024/1024MB));System.out.println(totaltotal字节\t(total/(double)1024/1024MB));/* 运行后max1866465280字节 1780.0MBtotal126877696字节 121.0MB*///默认情况下分配的总内存占电脑内存1/4 初始化1/64 }报OOM怎么办 1.尝试扩大堆内存如果还报错说明有死循环代码 或垃圾代码 Edit Configrationadd VM option 输入-Xms1024m -Xmx1024m -XX:PrintGCDetails 新生区养老区305664K699392K1005056K 981.5M 说明元空间物理并不存在。 2.分析内存看一下哪个地方有问题专业工具 能够看到代码第几行出错内存快照分析工具MATJprofiler MATJprofiler作用 分析Dump内存文件快速定位内存泄漏获得堆中的数据获得大的对象 //-Xms 设置初始化内存分配大小 默认1/64 //-Xmx 设置最大分配内存默认1/4 //-XX:PrintGCDetails 打印GC垃圾回收信息 //-XX:HeapDumpOnOutOfMemoryError //oom DUMP //-Xms1m -Xmx8m -XX:HeapDumpOnOutOfMemoryError public class Demo03 {byte[] array new byte[1*1024*1024]; //1mpublic static void main(String[] args) {ArrayListDemo03 list new ArrayList();int count 0;try {while (true){list.add(new Demo03()); //不停地把创建对象放进列表count count 1;}} catch (Exception e) {System.out.println(count: count);e.printStackTrace();}} }GC垃圾回收 JVM在进行GC时并不是对新生代、幸存区、老年区这三个区域统一回收。大部分时候回收的是新生代 GC两种轻GC重GC (Full GC全局GC) 引用计数法 一般 JVM 不用大型项目对象太多了 复制算法 -XX:MaxTenuringThreshold15 设置进入老年代的存活次数条件。 好处没有内存的碎片内存效率高 坏处浪费了内存空间一个幸存区永远是空的假设对象100%存活复制成本很高。 复制算法最佳使用场景对象存活度较低的时候新生区。 标记清除 优点不需要额外空间优化了复制算法。 缺点两次扫描严重浪费时间会产生内存碎片。 标记压缩标记整理再优化 三部曲标记–清除–压缩 标记清除压缩再优化 每标记清除几次就压缩一次或者内存碎片积累到一定程度就压缩。 分代收集算法 根据内存对象的存活周期不同将内存划分成几块JVM一般将内存分成新生代和老生代。 在新生代中有大量对象死去和少量对象存活所以采用复制算法只需要付出少量存活对象的复制成本就可以完成收集 老年代中因为对象的存活率极高没有额外的空间对他进行分配担保所以采用标记清理或者标记整理算法进行回收 总结 内存效率复制算法 标记清除算法 标记压缩算法时间复杂度 内存整齐度复制算法 标记压缩算法 标记清除算法 内存利用率标记压缩算法 标记清除算法 复制算法 没有最好的算法只有合适的算法GC也被称为分代收集算法。 年轻代存活率低用复制算法。老年代存活率高区域大用标记-清除-压缩。
http://www.sadfv.cn/news/8276/

相关文章:

  • 白云商城型网站建设备案的网站可以改域名吗
  • 中国建设银行的网站用户名是什么意思影城网站设计
  • 惠州做棋牌网站建设哪家好巨鹿网站建设网络公司
  • 什么主题的网站容易做常用网站图标
  • 八年级信技做网站网络工程师需要考什么证书
  • 如何进行网站调试幸福宝推广app网站入口
  • 外贸seo网站制作外贸站外推广
  • 网站通常用什么编程做网页制作素材可爱图片
  • 简述营销网站建设包含哪些内容切换国外ip的软件
  • 南宁营销型网站设计定制手机壳网站
  • 学生如何自己做网站企业网上年审营业执照
  • 手机网页编辑软件百度关键词排名优化
  • 百度上怎么做网站保险网站有哪些保险网站
  • 承德网站建设专家wordpress页眉插件
  • 作一个网站要多少钱门户网站兴化建设局
  • 公司简介宣传网站优化培训如何优化
  • 赞皇建站建设好的网站设计培训学校
  • 昆山网站制作网络推广的方法包括
  • 高新区网站建设的建议广州白云区防疫工作
  • 昆山网站建设费用可以做外链的音乐网站
  • 建站之星好不好网站模版好建设吗
  • 招聘网站建设人员静态网站的好处
  • python 做网站 案例微信小程序开发模板网站
  • 天峻县公司网站建设宣传册设计一般多少钱
  • 网站建设 广告推广如何做淘宝网网站域名
  • 设计学习网站养老网站建设
  • 橙色系网站网上购物平台排行
  • 网站为什么要服务器企业网站建设的要求
  • 常州的做网站的公司排名短视频seo排名加盟
  • 做北京会所网站哪个好域名备案了 怎么建设网站