首页 > 编程语言 >Java Virtual Mechine

Java Virtual Mechine

时间:2023-01-06 07:11:22浏览次数:48  
标签:释放 Java Mechine Virtual GC 内存 线程

深入理解Java Virtual Mechine

Garbage Collector Gc tuning

简历:熟悉GC常用算法,熟悉常见垃圾收集器,具有实际JVM调优实战经验

1.what is garbage?

lost pointer

2.how to find it?

reference count(python)

Root reaching

3.GC algorithms

4.available collectors

GC随着内存的大小不断增长而演进

几兆 - 几十兆:Serial单线程STW垃圾回收 年轻代 老年代

几十兆 - 上百兆1G:parallel并行多线程(JDk1.8默认)

数十G:Concurrent GC(CMS+ParNew)

新生代和老年代

5.tuning
冯诺依曼结构的计算机体系:

程序是如何运行的:从硬盘load to memory形成进程,进程包括指令和数据。cpu将内存中的指令一条一条拿去执行,需要数据就拿数据。

程序的栈(栈帧stack frame)和堆

栈:每个线程一个,先进后出。栈帧:每个方法一个,方法结束,栈空间自动释放。

堆:执行过程中手工new出来的,不会自动释放需要垃圾回收器来管理

最难调试的bug

野指针:同一个对象,存在两个指针一个释放了,另一个不知道还在使用(不在指向任何对象的指针)NullPointerExcetion

并发问题:多线程访问同一块内存空间

语言的发展历史
C/C++:

手工管理 malloc free / new delete

忘记释放 - memory leak 内存泄漏 - out of memory

释放多次 产生及其难以调试的bug,一个线程空间莫名其妙被另外一个释放了

开发效率很低

Java python go

方便内存管理的语言

GC - Garbage Collector - 应用线程只管分配,垃圾回收器负责回收

标签:释放,Java,Mechine,Virtual,GC,内存,线程
From: https://www.cnblogs.com/saulblogs/p/17029352.html

相关文章

  • C#(Java)将List集合构建成Tree树
    C#(Java)将List集合构建成Tree树子安树构建算法,可以通过空间换时间进一步优化速度树结构的类publicclassMyTreeNode{publicMyTreeNode(long?iD,long?pare......
  • java 货物摆放 —— 蓝桥
    题目描述小蓝有一个超大的仓库,可以摆放很多货物。现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物......
  • Java基础面试题(一)
    Java基础1、数据类型基本数据类型在声明时自动分配空间,引用数据类型声明时只是分配了引用空间,只有在创建对象时才会开辟 空间。2、标识符命名规则标识符的含义类的名......
  • JAVA_Fastjson
    0x00前言Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和JavaObject之间互相转换。提供两个主要接口来分别实现序列化和反序列化操作......
  • Java开发学习(五十)----MyBatisPlus快速开发之代码生成器解析
    1、代码生成器原理分析造句:我们可以往空白内容进行填词造句,比如:在比如:观察我们之前写的代码,会发现其中也会有很多重复内容,比如:那我们就想,如果我想做一个Book模块......
  • Java基础语法
    Java基础语法注释注释不会被执行,是给写代码的人看的注释需要注意规范单行注释多行注释文档注释JavaDoc生成自身的API文档//找到需要生成JavaDoc......
  • java命令行传参
    最近学习了java命令行传参,运到了一些错误。针对下面的目录结构。成功案例:编译.class文件直接进入CmdLine所在的文件就可以了。运行时,我是在如上图所示的目录下执行的......
  • Java Scanner类
    JavaScanner类java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。下面是创建Scanner对象的基本语法:Scanners=newScanner(System.in......
  • Java中next() 、nextInt() 和 nextLine() 方法
    Scanner的几个常用next输入方法要点next():一直接收从键盘中打入的内容直到读取到回车,此回车并不会被读取,且一定要读取到有效字符后才可以结束输入。对输入有效字符之......
  • JavaScript 中如何拦截全局 Fetch API 的请求和响应?
    本文翻译自InterceptingJavaScriptFetchAPIrequestsandresponses拦截器是可用于预处理或后处理HTTP请求的代码块,有助于全局错误处理、身份验证、日志记录等。在......