logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

6.内存回收的具体实现-垃圾收集器

       上图展示了7种用于不同分代的垃圾收集器;       如果两个收集器之间存在连线,这说明它们可以搭配使用;             虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器;Serial收集器       具有两个特点:       1.只会使用一个线程去完成垃圾回收工作;       2.在进行垃圾回收的时候,必须暂停其他所有的工作线程,直至它收集结束;Stop

2.实战:OutOfMemoryError(OOM)异常

前言        除了程序计数器外,虚拟机内存的其他运行时区域都有发生OutOfMemoryError(OOM)异常的可能;       本文工作分两部分:1.通过代码验证各个运行时区域存储的内容;2.遇到内存溢出异常的时候,如何根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢出,以及出现这些异常后该如何处理;Java堆溢出       堆用来存储对象实例,只

9.虚拟机类加载机制

概述       虚拟机把描述类的数据从Class文件中加载到内存,并对数据进行校验,转换解析和初始化,最终形成可被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制;       类型的加载,连接和初始化都是在程序运行时完成的,这种做法虽然能增加性能开销,但运行期动态加载和动态连接是Java的动态扩展的基础;类加载机制       解析阶段可以在初始化阶段之后进行,这是为了支持Java的运行

自定义Java虚拟机01-搜索class文件

前言public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, world!");}}       加载上述HelloWorld类之前,首先要加载它的超类(java.lang.Object);在调用main方法前,因为虚拟机需要向mai...

Java内存模型(JMM)

多任务和高并发的内存交互多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。物理机的并发问题与虚拟机中的情况有很多相似之处...

2.Java堆对象分配,布局和访问的全过程

对象的创建       这里说的对象指的是普通Java对象,不包括数据和Class对象等。       类加载过程:虚拟机遇到new指令,首先去检查new指令的参数是否能在常量池中定位到一个类的符号引用,并且这个符号引用代表的类是否已被加载,解析和初始化过。如果没有,那么先执行相应的类加载过程。       堆内存分配:在类加载检查通过后,要创建的对象所需的内存大小已经确定了,虚拟机将一块确定大小

10.Java永久代去哪了

      在Java虚拟机中,类包含了其对应的元数据,比如类的层级信息,方法数据和方法信息(如字节码,栈和变量大小),运行时常量池,已确定的符号引用和虚方法表;      在过去(当自定义类加载器使用地不是很普遍的时候),类几乎是静态的,并且很少被卸载和回收;因此类可以被看做是“永久的”;另外由于类作为JVM实现的一部分,它们不由程序来创建,因此它们也被认为是“非堆”的内存;      在JDK

8.Java容器-Set详解

       本文主要讲Set的三个子类:       HashSet:底层数据结构是哈希表(是一个元素为链表的数组) + 红黑树;       TreeSet集合:1.底层数据结构是红黑树(是一个自平衡的二叉树);2.保证元素的排序方式;       LinkedHashSet集合:底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成;HashSet       1.实现Set接口; 

11.盛最多水的容器(Container With Most Water)

题目描述         给定n个正整数 a1,a2,...,an,其中每个整数用坐标(i,ai)表示。连接点(i,ai)和(i,0)画出直线i,总共有n条线。请找出其中两条直线,使得它们与x轴形成的容器能够装的水最多。注意:n>=2解题思路分析    1.定义两个指针,left和right,初始时,指向首部和尾部;    2.计算两个指针之间的面积area1 = min(heigh

#算法
30.连续子数组的最大和

题目描述         HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。         但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。

#算法
到底了