java 栈 大小_java – JVM堆栈大小规范

Question, what does 1 MB stack size states in JVM as I have no idea what size a stack frame of?

1 MB默认线程堆栈大小意味着每个线程默认具有1MB(1048576字节)的堆栈空间.例外情况是,如果您的代码使用其中一个Thread构造函数创建一个线程,您可以在其中提供堆栈大小参数.

堆栈帧的大小取决于被调用的方法.它需要保存方法的参数和局部变量,因此帧大小取决于它们的大小.每个帧还需要(我认为)两个额外的单词来保存已保存的帧指针和保存的返回地址.

请注意,在递归算法中,您可以为一个“递归级别”拥有多个堆栈帧.对于writeObject(在Java 8中),使用的算法是递归的,并且每个级别的数据结构通常有4个帧被序列化:

writeObject0

writeOrdinaryObject

writeSerialData

defaultWriteFields

writeObject0

etcetera

由于编译器的差异以及ObjectInputStream / ObjectOutputStream的实现的变化,实际的帧大小将取决于平台.您最好尝试(粗略地)测量所需的堆栈空间,而不是尝试从第一原则预测帧大小.

One more question, does every thread has 3000k stack size if I put a JVM option of -Xss3000k ?

是的……除了我上面描述的例外.

解决您的困境的一个可能的解决方案是创建一个特殊的线程,其中包含一个用于序列化的巨大堆栈.反序列化将需要具有大堆栈的类似线程.对于其余的线程,默认的堆栈大小应该没问题.

其他可能的方案:

>实现writeReplace和readResolve方法,将epc对象的父结构展平为一个数组,这样就不会得到深度递归. (显然,需要非递归地完成展平/不展平.)

>在调用writeObject等之前,请执行相同的展平操作.

>使用不同的序列化机制,或者可能是自定义机制.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java bloomfilter_爬虫技术之——bloom filter(含java代码)

在爬虫系统中,在内存中维护着两个关于URL的队列,ToDo队列和Visited队列,ToDo队列存放的是爬虫从已经爬取的网页中解析出来的即将爬取的URL,但是网页是互联的,很可能解析出来的URL是已经爬取到的,因此需要VI…

java new对象 =null_在Java中将对象分配为null会影响垃圾回收吗?

通常,没有。但就像所有事情一样:这取决于。如今,Java中的GC非常好,所有内容都应该在不再可用后立即清理。这就是在为局部变量留下一个方法之后,以及当不再为字段引用类实例时。如果您知道它将继续引用,则只…

java php js_【javascript/PHP】当一个JavaScripter初次进入PHP的世界,他将看到这样的风景...

本文将从以下11点介绍javascript和PHP在基础语法和基本操作上的异同:1.数据类型的异同2.常量和变量的定义的不同,字符串连接运算符不同3.对象的创建方法的不同4.PHP与JS在变量声明提升和函数声明提升的差异5.var在JS和PHP中使用的差异6.PHP和JS在访问对象…

java so jnienv_JNI初步(五)jni ndk 一个.so文件依赖另一个.so文件的写法

注意:本文是在ndk环境下编写1.写native类声明native方法package com.godv.audiosuc;public class NativePlayers {static{System.loadLibrary("JNI_ANDROID_AUDIOS");System.loadLibrary("JNI_ANDROID_TEST");}//native方法public static nativ…

从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

如果创建一个 Spring 项目Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话,那可真令人忧伤。1.在 MyEclipse 创建项目后,可以以…

java 系统类型_Java获取操作系统类型

Java获取操作系统完整版系统枚举类:public enum EPlatform {Any("any"),Linux("Linux"),Mac_OS("Mac OS"),Mac_OS_X("Mac OS X"),Windows("Windows"),OS2("OS/2"),Solaris("Solaris"),SunOS…

java的min函数_Java语言实现包含min函数的栈

package stack;import java.util.ArrayList;/*** 实现包含min函数的栈* author DHC* param */public class MinInStack {public static void main(String[] args) {MinInStack newStack new MinInStack();newStack.push(4);newStack.push(6);newStack.push(2);newStack.push(5…

updatepanel失效怎么办_【点滴积累】解决jQuery绑定事件在updatepanel更新后失效的方法...

背景 接到了领导给的一个New Feature,为系统的菜单导航栏进行一些个性化的操作(鼠标移到导航菜单时下方出现子菜单,移到其他的菜单选项时显示该选项的子菜单,隐藏其他子菜单。其次就是当使用鼠标点击一个菜单选项时就把该菜单及其子菜单固定&…

azure mysql on vnet_管理 VNet 终结点 - Azure 门户 - Azure Database for MySQL | Microsoft Docs

您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.使用 Azure 门户创建和管理 Azure Database for MySQL VNet 服务终结点和 VNet 规则Create and manage Azure D…

java excel api及详细教程_针对Java Excel API及详细教程

时在java开发中会操作excel表格,其实操作起来也特别简单。这里把前期操作步骤说一下,本文会简单的介绍一个开放源码项目:Java Excel Api,使用它大家就可以方便的操作Excel文件了。首先下载好:Java Excel Api&#xff0…

java jmap jc_利用jmap命令查看JVM内存使用详情

介绍打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。它的用途是为了展示java进程的内存映射信息,或者堆内存详情。可以输出所有内存中对象的工具,甚至可以将VM 中的heap&#xf…

雅居乐万豪酒店java_“万豪,我心所属之地” | 上海雅居乐万豪酒店Terence Sun的实习故事...

​我叫孙庭骏,来自台北,目前就读瑞士恺撒里兹酒店管理学院,在来上海之前曾在瑞士苏黎世万豪酒店的餐饮部实习过两次,共一年的时间,所以万豪对我来说并不陌生。万豪一直深深吸引我的莫过于它的核心价值以及非凡待客之道…

java quartz spring_JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务

基于Spring Boot Quartz开发的JavaLib-quartz,目的是帮你快速构建定时任务系统,你可以专心编写你的业务逻辑,而不必关注定时任务具体是如何实现的,他的性能如何,有没有异常以及异常处理,监控等等问题。这些…

java static 加载顺序_一个例子搞清楚Java类加载顺序

当我们new一个GirlFriend时,我们都做了什么?一个例子搞懂Java程序运行顺序public class Girl {Person person new Person("Girl");static{System.out.println("Girl static");}static Person staticPerson new Person("GirlS…

java 轻量数据库_DBTree是一个springboot2 + vue-element-template实现的轻量数据库表结构查看及管理工具...

DBTree简介DBTree是一个WEB版的轻量数据库表结构查看及管理工具,相比phpMyAdmin, DBTree只专注于方便开发查看表结构信息和 注释维护。通过树形展示库表结构,可以对表进行自定义归类,在线更新注释。你还可以使用它来部分替代mybatis generato…

华为java 优招面试题_2017华为优招笔试题

哎,没有接到笔试通知,不知道为啥就错过了。之后见到题目,前两道编程题。其实都见过类似的题目,有点思路,但是直接快速完整实现出来,水平还是达不到。这样的题目,也不算难,三道编程题…

java inject例子_java – 手动实例化@InjectMock带注释的字段

我已经浏览了一些博客,以了解Mockito注释如何工作的基础知识.但是,我怀疑何时可以手动实例化用InjectMocks注释的字段,即InjectMocksA a new A();什么时候依靠MockitoAnnotations.initMocks()功能来做同样的事情:InjectMocksA a;这取决于我们用来运行测试用例的Jun…

java 新建 api 案列_Java利用webservice创建接口案例源码

环境要求:JDK1.7,并配置Java的环境变量BaseDao 接口:/*** 要使得成为一个可供访问的接口,必须添加:WebService* */WebServicepublic interface BaseDao {//添加一个加法的接口WebResult(name"addddddre")pu…

java通用异常_Java常用异常整理

填坑,整理下Java的常用异常。正确使用异常在实际编码中非常重要,但面试中的意义相对较小,因为对异常的理解和应用很难通过几句话或几行代码考查出来,不过我们至少应答出三点:异常类的继承关系、常用异常类、常用异常类…

mysql 读取properties_JDBC中使用Properties读取配置文件有什么用

开发中获得连接的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。使用properties文件,Java中有专门用来装载配置文件的类Properties(Java.util.Properties)…