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

怎么做浏览器网站网络营销主要内容

怎么做浏览器网站,网络营销主要内容,做网站一定要有营业执照吗,可以做微网站的第三方平台有哪些1.Java堆溢出 Java堆用于储存对象实例,我们只要不断地创建对象,并且保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么随着对象数量的增加,总容量触及最大堆的容量限制后就会 产生内存溢出异常。 限制Java …

1.Java堆溢出

        Java堆用于储存对象实例,我们只要不断地创建对象,并且保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么随着对象数量的增加,总容量触及最大堆的容量限制后就会 产生内存溢出异常。
        限制Java 堆的大小为 20MB ,不可扩展(将堆的最小值 -Xms 参数与最大值 -Xmx 参数设置为一样即可避免堆自动扩展),通过参数-XX +HeapDumpOnOutOf-MemoryError 可以让虚拟机 在出现内存溢出异常的时候Dump 出当前的内存堆转储快照以便进行事后分析。
public class HeapOOM {
static class OOMObject {
}
public static void main(String[] args) {
List<OOMObject> list = new ArrayList<OOMObject>();
while (true) {
list.add(new OOMObject());}}
}

2.虚拟机栈和本地方法栈溢出

关于虚拟机栈和本地方法栈,在《Java 虚拟机规范》中描述了两种异常:
1 )如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出 StackOverflowError 异常。
使用没有出口递归的方式,超出虚拟机所允许的最大深度
public class JavaVMStackSOF {private int stackLength = 1;public void stackLeak() {stackLength++;stackLeak();
}
public static void main(String[] args) throws Throwable {JavaVMStackSOF oom = new JavaVMStackSOF();try {oom.stackLeak();} catch (Throwable e) {System.out.println("stack length:" + oom.stackLength);throw e;}
}

2 )如果虚拟机的栈内存允许动态扩展,当扩展栈容量无法申请到足够的内存时,将抛出OutOfMemoryError异常。
设置许多局部变量, 为了多占局部变量表空间,让栈帧申请不到内存。
public class JavaVMStackSOF {private static int stackLength = 0;public static void test() {long unused1, unused2, unused3, unused4, unused5,unused6, unused7, unused8, unused9, unused10,unused11, unused12, unused13, unused14, unused15,unused16, unused17, unused18, unused19, unused20,unused21, unused22, unused23, unused24, unused25,unused26, unused27, unused28, unused29, unused30,unused31, unused32, unused33, unused34, unused35,unused36, unused37, unused38, unused39, unused40,unused41, unused42, unused43, unused44, unused45,unused46, unused47, unused48, unused49, unused50,unused51, unused52, unused53, unused54, unused55,unused56, unused57, unused58, unused59, unused60,unused61, unused62, unused63, unused64, unused65,unused66, unused67, unused68, unused69, unused70,unused71, unused72, unused73, unused74, unused75,unused76, unused77, unused78, unused79, unused80,unused81, unused82, unused83, unused84, unused85,unused86, unused87, unused88, unused89, unused90,unused91, unused92, unused93, unused94, unused95,unused96, unused97, unused98, unused99, unused100;stackLength ++;test();unused1 = unused2 = unused3 = unused4 = unused5 =unused6 = unused7 = unused8 = unused9 = unused10 =unused11 = unused12 = unused13 = unused14 = unused15 =unused16 = unused17 = unused18 = unused19 = unused20 =unused21 = unused22 = unused23 = unused24 = unused25 =unused26 = unused27 = unused28 = unused29 = unused30 =unused31 = unused32 = unused33 = unused34 = unused35 =unused36 = unused37 = unused38 = unused39 = unused40 =unused41 = unused42 = unused43 = unused44 = unused45 =unused46 = unused47 = unused48 = unused49 = unused50 =unused51 = unused52 = unused53 = unused54 = unused55 =unused56 = unused57 = unused58 = unused59 = unused60 =unused61 = unused62 = unused63 = unused64 = unused65 =unused66 = unused67 = unused68 = unused69 = unused70 =unused71 = unused72 = unused73 = unused74 = unused75 =unused76 = unused77 = unused78 = unused79 = unused80 =unused81 = unused82 = unused83 = unused84 = unused85 =unused86 = unused87 = unused88 = unused89 = unused90 =unused91 = unused92 = unused93 = unused94 = unused95 =unused96 = unused97 = unused98 = unused99 = unused100 = 0;}public static void main(String[] args) {try {test();}catch (Error e){System.out.println("stack length:" + stackLength);throw e;}}
}
无论是由于栈帧太大还是虚拟机栈容量太小,当新的栈帧内存无法分配的时候, HotSpot虚拟机抛出的都是 StackOverflowError 异常。
还有一种方法是建立许多线程把内存消耗光,建议不要测试,卡的批爆。
public class JavaVMStackOOM {private void dontStop() {while (true) {}}public void stackLeakByThread() {while (true) {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {dontStop();}});thread.start();}}public static void main(String[] args) throws Throwable {JavaVMStackOOM oom = new JavaVMStackOOM();oom.stackLeakByThread();}}

3.方法区和运行时常量池溢出

        String::intern()是一个本地方法,它的作用是如果字符串常量池中已经包含一个等于此 String 对象的字符串,则返回代表池中这个字符串的String 对象的引用;否则,会将此 String 对象包含的字符串添加到常量池中,并且返回此String 对象的引用。在 JDK 6 或更早之前的 HotSpot 虚拟机中,常量池都是分配在永久代中,我们可以通过-XX PermSize -XX MaxPermSize 限制永久代的大小,即可间接限制其中常量池的容量。
public class RuntimeConstantPoolOOM {public static void main(String[] args) {
// 使用Set保持着常量池引用,避免Full GC回收常量池行为Set<String> set = new HashSet<String>();
// 在short范围内足以让6MB的PermSize产生OOM了short i = 0;while (true) {set.add(String.valueOf(i++).intern());}}
}
借助 CGLib 使得方法区出现内存溢出异常
public class JavaMethodAreaOOM {public static void main(String[] args) {while (true) {Enhancer enhancer = new Enhancer();enhancer.setSuperclass(OOMObject.class);enhancer.setUseCache(false);enhancer.setCallback(new MethodInterceptor() {public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)        throws Throwable {return proxy.invokeSuper(obj, args);}});enhancer.create();}}static class OOMObject {}
}

4.本机直接内存溢出

直接内存( Direct Memory )的容量大小可通过 -XX MaxDirectMemorySize 参数来指定,如果不
去指定,则默认与 Java 堆最大值(由 -Xmx指定)一致,该代码越过了DirectByteBuffer类直接通
过反射获取 Unsafe 实例进行内存分配( Unsafe 类的 getUnsafe()方法指定只有引导类加载器才会返回实例,因为虽然使用DirectByteBuffer分配内存也会抛出内存溢出异常,但它抛出异常时并没有真正向操作系统申请分配内存,而是通过计算得知内存无法分配就会在代码里手动抛出溢出异常,真正申请分配内存的方法是Unsafe::allocateMemory()。
public class DirectMemoryOOM {private static final int _1MB = 1024 * 1024;public static void main(String[] args) throws Exception {Field unsafeField = Unsafe.class.getDeclaredFields()[0];unsafeField.setAccessible(true);Unsafe unsafe = (Unsafe) unsafeField.get(null);while (true) {unsafe.allocateMemory(_1MB);}}
}

      
http://www.hrbkazy.com/news/29102.html

相关文章:

  • 网站全屏弹出窗口开封网站快速排名优化
  • 网站开发 英文产品如何做市场推广
  • 金融企业网站建设网站提交收录入口
  • 做网站注册会员加入实名认证功能新浪微博指数查询
  • 网站建设要咨询哪些找资源的关键词有哪些
  • 工作号做文案素材的网站网页搜索
  • 免费学校网站建设软文范例大全500字
  • 教做发绳的网站公司做网站需要多少钱
  • 站群注册域名费用一般多少钱
  • 人力资源网站模板成人速成班有哪些专业
  • 网站开发技术部分短视频推广渠道有哪些
  • 网站建设延期合同书免费创建自己的网站
  • 延庆县专业网站制作网站建设网店搜索引擎优化的方法
  • 公司年前做网站好处品牌的宣传及推广
  • 网站建设前期准备工作总结如何做电商赚钱
  • 广州励网网站建设网络公司搭建自己的网站
  • 网站建设执招标评分表河源今日头条新闻最新
  • 有专业制作网站的公司吗百度seo整站优化
  • 如何查看一个网站是什么程序cms做的广州网站推广服务
  • 阳江网站seo公司免费网站java源码大全
  • dw做网站表格插不到右边seo网站管理招聘
  • 做桑拿网站犯法吗营销推广活动策划方案大全
  • 企业网站优化公司百度seo白皮书
  • 到国外网站上做兼职翻译培训班有哪些
  • 用java软件做网站广州番禺发布网
  • dede网站建设做一个微信小程序需要多少钱
  • wordpress不锈钢企业seo搜索引擎优化步骤
  • WordPress初始化主题百度网站优化
  • 奉化建设局网站产品推销
  • 怎么看自己做没做网站地图seo求职